# 一.快捷键
# 1.tab
使用 table 补全
# 2.光标移动到行首
Ctrl a
# 3.光标移动到行尾
Ctrl e
# 4.剪切光标前面的单词
Ctrl w
# 5.删除整行内容
Ctrl u
# 6.剪切光标及光标后面的所有内容
Ctrl k
# 7.粘贴剪切的内容到光标前面
Ctrl y
# 8.一键清屏
是l不是数字1
Ctrl l
# 9.时间相关
# 生成时间
date +%Y-%m-%d
# 创建文件夹
mkdir $(date +%Y%m%d)
2
3
4
5
# 二.机器命令
# 1.终端工具
- electerm ssh 终端工具
- termius ssh 终端工具
- MobaXterm ssh 终端工具
- Tabby
- xshell
- mac 系统自带工具
# 2.查看命令
- curl cheat.sh/cd
- cd --help
- man cd
#查看pwd命令的使用
curl cheat.sh/pwd
2
# 3.操作系统
uname -a
# 4.主机名
#查看主机名
hostname
#修改主机名
hostnamectl set-hostname ecs-07
2
3
4
5
# 5.远程登录
#ssh登录
ssh -p 22 root@10.201.0.7
2
# 6.查看公网 ip
curl ifconfig.me
# 7.清屏
#shell清屏
clear
#shell清屏
ctrl+l
#windows清屏
cls
2
3
4
5
6
7
8
# 8.uname -a 详解
uname -a
是一个在 Unix、Linux 等操作系统中使用的命令,用于显示系统的一些基本信息,包括内核版本、主机名、操作系统类型、硬件架构等。这个命令可以提供有关系统的整体信息,对于诊断和调试问题、确认系统配置等都很有用。
运行 uname -a
命令会输出一行文本,其中包含了关于系统的多个信息字段,如下所示:
Linux hostname 4.15.0-72-generic #81-Ubuntu SMP Tue Nov 26 12:20:02 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
在这个输出中,各字段的含义如下:
Linux
: 操作系统类型,这里是 Linux。hostname
: 主机名,即计算机的名称。4.15.0-72-generic
: 内核版本号,指示正在运行的 Linux 内核版本。#81-Ubuntu SMP Tue Nov 26 12:20:02 UTC 2019
: 内核编译信息,包括操作系统发布时间和内核构建日期。x86_64 x86_64 x86_64
: 硬件架构,这里是 x86_64,表示 64 位的 x86 架构。GNU/Linux
: 操作系统名称,表示是一个基于 GNU 工具的 Linux 系统。
通过运行 uname -a
命令,您可以快速获取有关系统的一些重要信息,这对于系统管理员、开发人员和用户来说都是很有用的。
# 9.获取公网 ip
#方式一
curl ifconfig.me
#方式二
wget -qO- ifconfig.me
#方式三
dig +short myip.opendns.com @resolver1.opendns.com
2
3
4
5
6
7
8
# 10.查看 centos 的信息
在 CentOS 系统中,可以通过以下几种方式查看当前系统的版本信息:
- 使用
cat /etc/centos-release
命令:
$ cat /etc/centos-release
CentOS Linux release 7.9.2009 (Core)
2
这个命令会显示当前 CentOS 的完整版本信息。
- 使用
lsb_release -a
命令:
$ lsb_release -a
LSB Version: :core-4.1-amd64:core-4.1-noarch
Distributor ID: CentOS
Description: CentOS Linux release 7.9.2009 (Core)
Release: 7.9.2009
Codename: Core
2
3
4
5
6
这个命令会展示更加详细的系统版本信息,包括发行商 ID、描述、发行版本号和代号等。
- 使用
hostnamectl
命令:
$ hostnamectl
Static hostname: centos7
Icon name: computer-vm
Chassis: vm
Machine ID: 3ea1a3ab70224b3fb1cba3b12345abcd
Boot ID: 12345abc-1234-abcd-1234-abcdef123456
Virtualization: kvm
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-1160.el7.x86_64
Architecture: x86-64
2
3
4
5
6
7
8
9
10
11
这个命令会展示更加丰富的系统信息,包括主机名、虚拟化类型、内核版本等。
# 11.系统类型
要确定你的Linux系统是Ubuntu还是CentOS,你可以使用几种不同的方法来检查。以下是一些常用的方法:
查看 /etc/os-release 文件: 打开终端,然后输入以下命令:
cat /etc/os-release
1这个文件包含了操作系统的详细信息,包括它的名称。
使用 lsb_release 命令: 如果你的系统安装了 LSB (Linux Standard Base),你可以使用以下命令来查看发行版信息:
lsb_release -a
1查看 /etc/*-release 文件: 在某些系统上,你可以直接查看
/etc/*-release
文件来获取信息。例如:cat /etc/centos-release cat /etc/lsb-release
1
2使用 uname 命令:
uname
命令可以显示内核信息,但它不会告诉你具体的发行版名称。不过,有时候内核版本信息可以给你一些线索:uname -a
1检查系统服务管理器: Ubuntu通常使用
systemd
作为服务管理器,而CentOS 7及以前的版本使用system-V init
,CentOS 8及以后也使用systemd
。你可以通过查看系统服务来获取一些线索:systemctl --version
1
# 三.进程命令
# 1.回退命令
#打开指定目录
cd [path]
#到上一级目录
cd ..
#返回上两级目录
cd ../..
#意思是返回到上次的目录,类似windows返回
cd -
#意思是回到根目录
cd /
#跳转到家目录,每个用户都有”家“目录,也就是用户的个人目录,比如root用户的”家“目录就是/root
cd ~
#转到根目录下的usr目录中———绝对路径
cd /usr
#转到当前目录下的test子目录中——相对路径
cd test
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 2.搜历史
#搜命令,有相同的可以按上下键筛选
ctrl+r
#空格键是筛选匹配的
空格键
#自动补全
tab
#上下键也可以翻页选择
2
3
4
5
6
7
8
9
10
# 3.grep 管道
#在win系统中查找
ps -ef | findstr 'versionCode'
#mac系统中查找
ps -ef | grep 'versionCode'
2
3
4
5
# 4.分区
#查看挂接的分区状态
mount | column -t
#查看所有分区
fdisk -l
#查看所有交换分区
swapon -s
#查看磁盘参数(仅适用于IDE设备)
hdparm -i /dev/hda
#查看启动时IDE设备检测状况
dmesg | grep IDE
2
3
4
5
6
7
8
9
10
11
12
13
14
# 5.定时任务
crond service
#启动服务
systemctl start crond.service
#关闭服务
systemctl stop crond.service
#重启服务
systemctl restart crond.service
#重新载入配置
systemctl reload crond.service
#查看状态
systemctl status crond.service
2
3
4
5
6
7
8
9
10
11
12
13
14
# 6.批量删除进程
要批量删除同一类进程(例如,批量关闭多个 Redis 实例),您可以使用 Shell 脚本或命令行工具来实现这个任务。下面是一些方法:
使用 pkill 或 pgrep:
使用pgrep
命令查找与 Redis 相关的进程的 PID 列表。例如,假设您希望杀死所有名为"redis-server"的进程:
pgrep redis-server
这将列出所有匹配的进程的 PID。
使用pkill
命令批量杀死这些进程。例如:
pkill redis-server
这将杀死所有匹配的进程。
使用 killall 命令:
您也可以使用killall
命令来杀死与特定进程名相关的所有进程。例如:
killall redis-server
这会杀死所有名为"redis-server"的进程。
使用循环:
如果您需要更多的灵活性,可以编写一个 Shell 脚本,使用循环来杀死一组进程。这样,您可以根据需要指定进程名或 PID。以下是一个示例 Shell 脚本:
#!/bin/bash
# 定义要杀死的进程名
process_name="redis-server"
# 查找匹配的进程PID并逐个杀死它们
for pid in $(pgrep "$process_name"); do
kill -9 "$pid"
done
2
3
4
5
6
7
8
9
将上述脚本保存为一个文件(例如,kill_redis.sh),然后使用 chmod 命令赋予执行权限:
chmod +x kill_redis.sh
最后,运行脚本以批量杀死 Redis 进程:
./kill_redis.sh
请注意,强制使用kill -9
可以立即终止进程,但也可能导致数据损坏或不一致,因此请谨慎使用。如果可能的话,首选使用正常的关闭方法来停止 Redis 实例。
# 四.系统命令
# 1.系统配置
命令 | 含义 |
---|---|
cat /proc/cpuinfo | 查看 linux 系统的 CPU 型号、类型以及大小 |
cat /proc/meminfo | 查看 linux 系统内存大小的详细信息,可以查看总内存,剩余内存、可使用内存等信息 |
uname -a | 查看内核/操作系统/CPU 信息 |
head -n 1 /etc/issue | 查看操作系统版本 |
hostname | 查看计算机名 |
lspci -tv | 列出所有 PCI 设备 |
lsusb -tv | 列出所有 USB 设备 |
lsmod | 列出加载的内核模块 |
env | 查看环境变量 |
# 2.重启
#先关机再重启
shutdown -r
#先关机不重启
shutdown -h
#先关机再关电源
halt
#重启
reboot
2
3
4
5
6
7
8
9
10
11
# 3.防火墙 firewalld
#查看状态
systemctl status firewalld
#停止
systemctl disable firewalld
#打开
systemctl enable firewalld
#禁用
systemctl stop firewalld
#启动
systemctl start firewalld
#开启端口号
firewall-cmd --add-port=8080/tcp --permanent
#重新加载
firewall-cmd --reload
#查询防火墙是否放行8080
firewall-cmd --query-port=8080/tcp
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 4.配置文件
vim /etc/profile/ #修改配置文件
source /etc/profile #设置配置文件生效
2
# 5.重复命令
ps 命令如何每 5s 查询一次
在 Linux 和 Unix 系统上,使用ps
命令来查询当前运行的进程信息是非常常见的。要使ps
命令每 5 秒查询一次,您可以结合使用watch
命令。watch
命令用于周期性地执行指定的命令,并在终端上显示结果。
下面是使用ps
命令每 5 秒查询一次的方法:
watch -n 5 ps
解释:
watch
: 是一个用于重复执行命令并输出结果的命令。-n 5
: 表示每隔 5 秒执行一次后面的命令。ps
: 是查询进程信息的命令。
当您运行上述命令后,终端将每隔 5 秒显示一次当前运行的进程信息,直到您通过按下Ctrl + C
来终止该命令。
# 6.echo 命令
#打印输出文字
echo hello world!
#转义字符
echo -e "hello\nworld"
echo -e "hello\tworld"
#设置输出格式
echo -e "\e [1;31; 43mhello\e [0m"
#上一个执行命令的退出状态码,0表示成功,非零值表示失败或错误
echo $?
2
3
4
5
6
7
8
9
10
11
12
这个命令使用了echo
命令以及一些特殊的转义序列,用于在终端中输出带有颜色的文本。让我们来解释这个命令的各个部分:
echo
:这是用于在终端中打印文本的命令。-e
:这是echo
命令的一个选项,用于启用对转义字符的解释,使得在双引号内的转义字符会被解释为它们的特殊含义。"\e[1;31;43mhello\e[0m"
:这是要输出的文本,其中包含了一些转义序列,用于设置文本的颜色和样式。让我们逐步解释这些部分:"\e[1;31;43m"
:这是一个起始颜色和样式的转义序列,其中包含以下组件:\e
:这是转义字符,用于表示序列的开始。[1;31;43m
:这是一系列以分号分隔的数字和字母,用于定义文本的样式和颜色。具体解释如下:1
:设置文本为粗体(加粗)。31
:设置文本颜色为红色。43
:设置文本的背景颜色为黄色。
"hello"
:这是要显示的文本内容,即 "hello"。"\e[0m"
:这是用于恢复文本默认样式的转义序列,其中包含以下组件:\e
:这是转义字符,用于表示序列的开始。[0m
:这是一个数字和字母的组合,用于将文本样式和颜色恢复为默认设置,即取消粗体、恢复标准颜色和背景颜色。
# 7.pwd
#Logical,打印符号链接目录的逻辑路径
-L
#Physical,打印符号链接目录对应的物理路径
-P
2
3
4
5
# 8.系统类型
[root@lavm-ikopaz5aoj ~]# uname -a
Linux lavm-ikopaz5aoj 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
2
uname -a
:这是一个用于显示系统信息的命令。在这里,它的输出是:
Linux lavm-ikopaz5aoj 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
Linux
:指示操作系统类型为 Linux。lavm-ikopaz5aoj
:这是主机名,也就是这台计算机的名称。3.10.0-1160.el7.x86_64
:这是内核版本号。x86_64
:表示处理器架构为 64 位。#1 SMP Mon Oct 19 16:18:59 UTC 2020
:内核编译日期和时间。x86_64 x86_64 x86_64
:这是处理器的架构信息。GNU/Linux
:操作系统名称。
# 9.系统内核版本
[root@lavm-ikopaz5aoj ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
2
cat /etc/redhat-release
:这是另一种尝试查看 Red Hat 系统版本信息的方式。执行这个命令后,输出是:
CentOS Linux release 7.9.2009 (Core)
这表明该系统运行的是 CentOS 7.9.2009 版本。
# 通用系统
cat /etc/os-release
# 指定系统
cat /etc/redhat-release
2
3
4
5
# 10.打印树结构
# 显示树结构
tree core/_static/nltk_cache
2
# 11.当前目录搜索
# 在当前目录下查找关键字
find . -name "*nltk*"
find . -name "*stopwords*"
2
3
# 12.判断是否是 Ubuntu?
Linux dev-node1 4.18.0-348.7.1.el8_5.x86_64 #1 SMP Wed Dec 22 13:25:12 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux 是 ubuntu 吗?
根据提供的信息,"dev-node1" 运行的操作系统不是 Ubuntu,而是一个基于 x86_64 架构的 CentOS 或 RHEL(Red Hat Enterprise Linux)系统。
Ubuntu 系统的内核版本号通常以 "Ubuntu" 开头,而不是 "4.18.0"。此外,"Ubuntu" 系统的内核版本号通常会包含 "generic" 或其他特定标识符。
因此,根据提供的信息,可以推断 "fastagi-dev-node1" 运行的操作系统是 CentOS 或 RHEL,而不是 Ubuntu。
# 13.换系统
ssh-keygen -R 47.92.235.198
# 14. sh和bash对比
命令历史与补全
bash
支持命令历史和自动补全功能,这使得用户可以轻松地重复之前的命令或快速输入命令。sh
不支持这些功能。脚本调试
bash
提供了一些内置的调试工具,如set -x
(用于在执行时显示命令)和set -e
(在命令失败时停止脚本执行)。sh
没有这些工具。算术扩展
bash
支持更复杂的算术运算,包括使用let
命令或$(( expression ))
语法。sh
的算术运算相对简单。循环和条件语句
bash
提供了更复杂的循环和条件语句,如until
循环和[[ ... ]]
条件表达式。sh
的循环和条件语句较为基础。
# 五.时间命令
# 1.date 命令
date:
命令用于显示当前系统的日期和时间。它可以以不同的格式来显示日期和时间,具体取决于操作系统和配置。
显示完整日期和时间:
date
#输出示例:Sat Jul 16 09:30:00 UTC 2023
2
3
仅显示日期(年、月、日):
date +%Y-%m-%d
#输出示例:2023-07-16
2
仅显示时间(小时、分钟、秒):
date +%H:%M:%S
#输出示例:09:30:00
2
显示自定义格式的日期和时间:
date +"%A, %B %d, %Y %r"
#输出示例:Saturday, July 16, 2023 09:30:00 AM
2
在这个例子中,%A 表示完整的星期几名称,%B 表示完整的月份名称,%d 表示月份中的日期,%Y 表示四位数的年份,%r 表示 12 小时制的时间。
# 2.uptime
uptime:
用于显示系统总共运行了多长时间和系统的平均负载。
22:58 up 3 days, 4:27, 2 users, load averages: 1.95 3.11 3.90
无选项 uptime 命令会显示一行信息,依次为:
当前时间、系统已经运行了多长时间、目前有多少用户登录、系统在过去的 1 分钟、5 分钟和 15 分钟内的平均负载。输出结果等同于 top 命令汇总区的第一行。
# 3.w 命令
w:
它用于显示当前登录到系统的用户信息,包括他们的用户名、登录时间、当前执行的命令以及他们所在的终端。它还显示系统的负载平均值。
运行"w"命令将输出一个用户列表,每个用户占一行。以下是"w"命令输出的示例:
解析上述示例输出:
- 第一行显示了系统的运行时间、当前登录用户数和平均负载情况。
- 第二行开始是用户信息的标题行,指示每列的含义。
- 从第三行开始,每行显示一个登录用户的信息。具体列的含义如下
USER | TTY | FROM | LOGIN@ | IDLE | JCPU | PCPU | WHAT |
---|---|---|---|---|---|---|---|
用户名 | 终端 | 登录来源 | 登录时间 | 闲置 | 累计 CPU | 当前 CPU | 当前命令/程序 |
alice | tty1 | 192.168.1.100 | 08:00AM 08/14/23 | 0:30 | 2:00 | 0.05 | bash |
bob | tty2 | workstation42 | 09:15AM 08/14/23 | 1:15 | 1:30 | 0.10 | top |
charlie | tty3 | 10.0.2.15 | 10:30AM 08/14/23 | 0:10 | 0:45 | 0.02 | vim file.txt |
david | pts1 | 192.168.1.101 | 11:45AM 08/14/23 | 0:05 | 0:20 | 0.01 | ssh remote |
# 4.who 命令
who:
命令显示当前登录到系统的用户列表,包括他们的用户名、登录时间和登录来源(终端或远程连接)。
user1 pts/0 2023-07-16 09:15 (192.168.1.100)
user2 pts/1 2023-07-16 09:20 (192.168.1.101)
user3 pts/2 2023-07-16 09:25 (192.168.1.102)
user4 pts/3 2023-07-16 09:27 (192.168.1.103)
2
3
4
解析上述示例输出:
- 每行显示一个登录用户的信息。
- 第一列是登录用户的用户名。
- 第二列是登录用户所使用的终端(如 pts/0、pts/1 等)。
- 第三列是登录用户的登录日期和时间。
- 第四列是登录用户的登录来源,可以是 IP 地址、主机名或设备。
# 5.last 命令
last:
命令用于显示最近登录到系统的用户列表和他们的登录历史。它显示每个用户的用户名、登录时间、登出时间(如果适用)以及他们登录的终端或来源。
user1 pts/0 192.168.1.100 Sat Jul 16 09:15 - 09:30 (00:15)
user2 pts/1 192.168.1.101 Sat Jul 16 09:20 - 09:25 (00:05)
user3 pts/2 192.168.1.102 Sat Jul 16 09:25 - 09:27 (00:02)
user4 pts/3 192.168.1.103 Sat Jul 16 09:27 - 09:30 (00:03)
2
3
4
解析上述示例输出:
- 每行显示一个登录用户的登录历史信息。
- 第一列是登录用户的用户名。
- 第二列是登录用户所使用的终端(如 pts/0、pts/1 等)。
- 第三列是登录用户的登录来源,可以是 IP 地址、主机名或设备。
- 第四列是登录用户的登录时间和登出时间。
- 第五列是登录用户的登录持续时间(登录时长)。
# 六.xargs 命令
# 1.介绍
xargs
是一个用于构建和执行命令的实用程序,通常用于将标准输入的文本转换为命令行参数。它的基本语法是:
xargs [选项] [命令]
# 2.基本用法
使用 xargs
来将标准输入的文本作为命令行参数传递给指定的命令。例如:
echo "file1.txt file2.txt file3.txt" | xargs cat
这个命令将 file1.txt
、file2.txt
和 file3.txt
作为参数传递给 cat
命令,从而将它们的内容合并并输出。
# 3.-n 选项
使用 -n
选项来指定每次执行命令的参数数量。例如:
echo "file1.txt file2.txt file3.txt" | xargs -n 2 cat
这个命令将每次将两个文件名传递给 cat
命令。
# 4.-I 选项
使用 -I
选项来指定一个替代字符串,xargs
将会用标准输入的文本中的每一行替代该字符串。例如:
echo "file1.txt file2.txt file3.txt" | xargs -I % cat %
这个命令将 %
替代为标准输入的每一行,然后执行 cat
命令。
# 5.-t 选项
使用 -t
选项来显示 xargs
执行的命令。这对于调试非常有用。例如:
echo "file1.txt file2.txt file3.txt" | xargs -t cat
这个命令将显示执行的命令,以及传递给 cat
命令的参数。
xargs
可以帮助你将标准输入的文本转化为命令行参数,使命令的执行更加灵活和高效。根据你的具体需求,你可以使用不同的选项来控制其行为。
# 七.watch
在现代的开发和运维环境中,容器化技术已经成为一种重要的趋势,而 Docker 作为最流行的容器化平台之一,为开发者和运维人员提供了强大的工具。为了有效地监控 Docker 容器的状态,我们常常需要实时查看运行中的容器以及它们的状态。Linux 中的 watch
命令就是一个非常有用的工具,它可以帮助我们定期执行指定的命令,并全屏显示输出。
# 1.什么是 watch
命令?
watch
命令是一个用于周期性执行命令的 Linux 工具。它会在终端窗口中每隔一定时间刷新命令的输出,便于用户观察命令的变化。默认情况下,watch
每 2 秒执行一次指定命令,但可以通过 -n
选项调整刷新间隔。
例如,下面的命令每 1 秒执行一次 date
命令:
watch -n 1 date
这将会在每秒更新当前时间,用户可以方便地观察到时间的变化。
# 2.在 Docker 中监控容器状态
Docker 使得应用的打包、分发和部署变得更加简单,但在容器运行过程中,监控其状态同样重要。通常情况下,我们需要使用 docker ps
命令来列出当前正在运行的容器。如果想要查看所有容器(包括已停止的),则需要加上 -a
选项。
结合 grep
命令,我们可以过滤出特定容器的状态。例如,若我们想监控与 Elasticsearch 相关的容器,可以使用以下命令:
docker ps -a | grep elasticsearch
此命令将列出所有与“elasticsearch”关键字匹配的容器状态。若没有任何输出,则意味着当前没有与 Elasticsearch 相关的容器在运行或存在。
# 3.使用场景
通过将 docker ps -a | grep elasticsearch
命令嵌入到 watch
命令中,我们可以每隔一段时间自动刷新监控结果。以下是具体的命令:
watch -n 1 'docker ps -a | grep elasticsearch'
这个命令的解释如下:
watch -n 1
:每 1 秒刷新一次输出。'docker ps -a | grep elasticsearch'
:监控所有容器中与“elasticsearch”匹配的状态。
通过执行这个命令,用户可以实时观察到与 Elasticsearch 相关的容器状态变化,比如启动、停止或崩溃等情况。
# 4.自定义刷新间隔
有时我们并不需要每秒更新一次信息,可能希望设置更长的刷新间隔。例如,在某些情况下,每 5 秒刷新一次就足够了。只需将 -n
参数后面的数字更改为 5,如下所示:
watch -n 5 'docker ps -a | grep elasticsearch'
这样,终端将每 5 秒显示一次当前所有与 Elasticsearch 相关的容器状态。
# 4.处理权限问题
在执行上述命令时,请确保您拥有访问 Docker 容器的权限。一般来说,您需要是 Docker 组的成员,或者使用 sudo
提升权限。例如:
watch -n 1 'sudo docker ps -a | grep elasticsearch'
通过这种方式,您可以确保命令的执行不受权限的限制。
# 5.结合其他命令进行监控
除了监控 Docker 容器状态外,watch
命令还可以与其他命令结合使用,以实现更多功能。例如,如果我们想查看系统的 CPU 使用率,可以结合 top
命令:
watch -n 2 'top -b -n 1 | head -n 20'
这条命令每 2 秒显示一次系统资源的前 20 行信息,帮助用户了解系统的实时负载。
02-文件命令 →