Linux基础命令学习记录
Linux 命令详解
1. 线上查询及帮助命令
man:
- 用法:
man 命令名 - 功能:显示指定命令的手册页,提供详细的命令说明和选项。
- 举例:
man ls查看ls命令的手册。
help:
- 用法:
help 命令名 - 功能:显示指定命令的简要帮助信息(通常为内置 shell 命令)。
- 举例:
help cd查看cd命令的帮助信息。
info:
- 用法:
info 命令名 - 功能:显示指定命令的详细信息页面。
- 举例:
info grep查看grep命令的详细信息。
2. 文件和目录操作命令
ls:
- 用法:
ls [选项] [目录或文件] - 功能:列出目录内容。
- 举例:
ls -l以详细格式列出目录内容。
cd:
- 用法:
cd 目录 - 功能:切换当前目录。
- 举例:
cd /home切换到/home目录。
cp:
- 用法:
cp [选项] 源文件 目标文件 - 功能:复制文件或目录。
- 举例:
cp file.txt /backup将file.txt复制到/backup目录。
find:
- 用法:
find [路径] [选项] [表达式]
-amin<分钟>:查找在指定时间曾被存取过的文件或目录,单位以分钟计算;
-atime<24小时数>:查找在指定时间曾被存取过的文件或目录,单位以24小时计算:
-cmin<分钟>:查找在指定时间之时被更改过的文件或目录;
-ctime<24小时数>:查找在指定时间之时被更改的文件或目录,单位以24小时计算;
-depth:从指定目录下最深层的子目录开始查找;
-empty:寻找文件大小为0Byte的文件,或目录下没有任何子目录或文件的空目录;
-exec<执行指令>:假设find指令的回传值为True,就执行该指令;
-maxdepth<目录层级>:设置最大目录层级;
-mmin<分钟>:查找在指定时间曾被更改过的文件或目录,单位以分钟计算;
-mtime<24小时数>:查找在指定时间曾被更改过的文件或目录,单位以24小时计算;
-perm<权限数值>:查找符合指定的权限数值的文件或目录;
-size<文件大小>:查找符合指定的文件大小的文件;
-type<文件类型>:只寻找符合指定的文件类型的文件;
-exec <执行指令>
作用:假设 find 命令的返回值为 True,则执行指定的命令。
示例:查找当前目录下的所有 .txt 文件,并打印每个文件的内容。
find ./ -name "*.txt" -exec cat {} \;
-
功能:在指定目录中搜索文件。
-
举例:
find /home -name "*.txt"查找/home下所有.txt文件。find /home -type f -name '*'find ./ -type f -mtime +7 -name "*.log" /app/logs/app_name/logs/: find ./ -type f -mmin -1 | xargs ls -l #在当前目录及其子目录中查找最后修改时间在 1 分钟以内的普通文件,并以详细格式列出这些文件的信息。 - **`xargs ls -l`**: - `xargs` 是一个用于构建和执行命令行的工具,它会将输入的数据作为参数传递给指定的命令。 - `ls -l` 是一个用于以详细格式列出文件信息的命令。find ./ -type f -perm 644ll -i find ./ -inum 234324 | xargs -i rm -rf {} - **`xargs -i rm -rf {}`**: - `-i` 选项表示将输入数据替换到命令中的 `{}` 占位符。 - `rm -rf {}` 是要执行的命令,用于递归删除目标文件或目录。#统计代码行数,排除空行 seq 100 > lnf.java #增量打印 find ./ -name "*.java" | xargs cat | grep -v ^$ | wc -l
mkdir:
- 用法:
mkdir [选项] 目录 - 功能:创建目录。
- 举例:
mkdir -p /data/newdir创建多级目录(递归)。
mv:
- 用法:
mv 源文件 目标文件 - 功能:移动或重命名文件。
- 举例:
mv old.txt new.txt将old.txt重命名为new.txt。
rm:
- 用法:
rm [选项] 文件 - 功能:删除文件或目录。
- 举例:
rm -rf /tmp/*删除/tmp目录下的所有内容。
touch:
- 用法:
touch 文件 - 功能:创建空文件或更新文件时间戳。
- 举例:
touch newfile.txt创建一个新文件。
touch test{1..100}
#模拟场景:拿到用户文件名,批量创建测试
ls > filename
cat filename | xargs touch
file:
- 用法:
file 文件 - 功能:显示文件类型。
- 举例:
file image.jpg查看image.jpg的文件类型(不受文件名影响)。
tree:
-
用法:
tree [目录] -
功能:以树形结构列出目录内容。
-
举例:
tree /etc显示/etc目录的树形结构。tree -L 1 #-L 层级显示
rename:
- 用法:
rename 旧模式 新模式 文件 - 功能:批量重命名文件。
- 举例:
rename .txt .md *.txt将所有.txt文件重命名为.md。
basename:
- 用法:
basename 路径 - 功能:提取文件名(写脚本)。
- 举例:
basename /path/to/file.txt输出file.txt。
dirname:
- 用法:
dirname 路径 - 功能:提取目录名(写脚本)。
- 举例:
dirname /path/to/file.txt输出/path/to。
chattr:
-
用法:
chattr [选项] 文件 -
功能:更改文件属性。
-
举例:
chattr +i /etc/fstab设置文件系统挂载为不可修改。i:不得任意更动文件或目录;
lsattr:
- 用法:
lsattr [选项] 文件 - 功能:显示文件属性。
- 举例:
lsattr file.txt查看file.txt的属性。
md5sum:
- 用法:
md5sum 文件 - 功能:计算文件的 MD5 哈希值。
- 举例:md5sum testfile > testfile.md5。
- 校验:md5sum testfile -c testfile.md5
3. 查看文件及内容处理命令
vi/vim:
- 用法:
vi/vim 文件 - 功能:使用 vi/vim 编辑器编辑文件。
- 举例:
vim file.txt用 vim 编辑file.txt。
vim在粘贴时会改变格式,vi不会
shift+zz强制保存
cat:
- 用法:
cat [选项] 文件 - 功能:显示文件内容。
- 举例:
cat file.txt显示file.txt的内容。
more:
- 用法:
more 文件 - 功能:分页显示文件内容。
- 举例:
more file.txt分页显示file.txt的内容。
head:
- 用法:
head [选项] 文件 - 功能:显示文件的开头部分。
- 举例:
head -n 10 file.txt显示file.txt的前 10 行。
tail:
- 用法:
tail [选项] 文件 - 功能:显示文件的末尾部分。
- 举例:
tail -n 10 file.txt显示file.txt的最后 10 行。
cut:
- 用法:
cut [选项] 文件 - 功能:截取文件的指定列。
- 举例:
cut -d: -f1,3 /etc/passwd提取/etc/passwd的第 1 和第 3 列。
sort:
-
用法:
sort [选项] 文件 -
功能:对文件内容进行排序。
-
举例:
sort -n numbers.txt对numbers.txt进行数值排序。 -
场景:过滤网络TCP连接状态进行排序
netstat -ant | awk 'NR>1{print $NF}' | sort | uniq -c | sort -nrk 1### 命令解释:`netstat -ant | awk 'NR>1{print $NF}' | sort | uniq -c | sort -nrk 1` #### 组成部分 - **`netstat -ant`**: - `netstat` 是一个用于显示网络连接、路由表、接口统计等网络信息的命令。 - `-a` 选项显示所有连接和监听的端口。 - `-n` 选项以数字形式显示地址和端口号,而不是尝试解析主机名或服务名称。 - `-t` 选项显示 TCP 协议的连接。 - **`awk 'NR>1{print $NF}'`**: - `awk` 是一个强大的文本处理工具,用于处理和分析文本数据。 - `NR>1` 表示从第二行开始处理(跳过标题行)。 - `$NF` 表示每行的最后一个字段(通常是连接状态)。 - **`sort`**: - `sort` 命令用于对文本内容进行排序。 - **`uniq -c`**: - `uniq` 命令用于去除重复行,`-c` 选项表示统计每个行的出现次数。 - **`sort -nrk 1`**: - `sort` 命令用于对文本内容进行排序。 - `-n` 表示按数值排序。 - `-r` 表示降序排序。 - `-k 1` 表示根据第一列进行排序。 #### 命令作用 该命令的作用是统计当前系统中每个 TCP 连接状态的出现次数,并按出现次数从高到低排序。 #### 输出结果 执行该命令时,输出结果是每个连接状态及其出现次数。例如: ```bash 40 ESTABLISHED 10 TIME_WAIT 5 LISTEN 3 CLOSE_WAIT 2 SYN_SENT40 ESTABLISHED:表示有 40 个连接处于ESTABLISHED状态。10 TIME_WAIT:表示有 10 个连接处于TIME_WAIT状态。5 LISTEN:表示有 5 个连接处于LISTEN状态。3 CLOSE_WAIT:表示有 3 个连接处于CLOSE_WAIT状态。2 SYN_SENT:表示有 2 个连接处于SYN_SENT状态。
注意事项
- **权限**:`netstat -ant` 命令通常需要 root 权限才能显示所有网络连接信息。
- **输出解释**:
- `ESTABLISHED`:连接已建立。
- `TIME_WAIT`:连接处于等待关闭状态。
- `LISTEN`:服务器正在监听某个端口。
- `CLOSE_WAIT`:连接正在等待关闭。
- `SYN_SENT`:客户端已发送连接请求,等待服务器响应。
通过这个命令,可以快速了解系统中不同 TCP 连接状态的分布情况。
```bash
egrep -ir -A 2 'error' /var/log/mysqld.log
场景描述:排查报错原因,通过egrep过滤报错日志的关键字error或warning,并且显示后几行内容进行排查定位
```
命令解释:`egrep -ir -A 2 'error' /var/log/mysqld.log`
组成部分
- **`egrep`**:
- `egrep` 是一个用于搜索文本的命令,支持扩展正则表达式。
- **`-i`**:
- `-i` 选项表示忽略大小写,使搜索不区分大小写。
- **`-r`**:
- `-r` 选项表示递归搜索,即在指定目录及其子目录中搜索。
- **`-A 2`**:
- `-A` 选项表示在匹配行之后显示指定数量的行(这里是 2 行)。
- **`'error'`**:
- 指定要搜索的模式,这里是字符串 `error`。
/var/log/mysqld.log:- 指定搜索的文件路径,这里是 MySQL 的日志文件。
命令作用
该命令的作用是在 `/var/log/mysqld.log` 文件及其子目录(如果存在)中递归搜索包含 `error`(不区分大小写)的行,并显示每行匹配内容及其后的 2 行。
输出结果
执行该命令时,输出结果是文件中所有包含 error 的行及其后的 2 行,忽略大小写。例如:
uniq:
- 用法:
uniq [选项] - 功能:去除重复行。
- 举例:
uniq file.txt去除file.txt中的重复行。
wc:
- 用法:
wc [选项] 文件 - 功能:统计文件的行数、词数和字节数。
- 举例:
wc -l file.txt统计file.txt的行数。
dos2unix:
- 用法:
dos2unix 文件 - 功能:将文件从 DOS 格式转换为 Unix 格式。
- 举例:
dos2unix file.txt转换file.txt的格式。
grep:
- 用法:
grep [选项] 模式 文件 - 功能:在文件中搜索指定模式。
- 举例:
grep "error" log.txt搜索服务中包含 "error" 的行。
egrep:
- 用法:
egrep [选项] 模式 文件 - 功能:扩展正则表达式搜索。
- 举例:
egrep "[0-9]" file.txt搜索个性化包含数字的行。
cat /etc/passwd | egrep "^s.*n$"
egrep "^s.*n$" /etc/passwd
egrep -ri "\berror\b" /var/log/
tr:
- 用法:
tr [选项] 原字符集 新字符集 - 功能:转换文件中的字符。
- 举例:
tr 'A-Z' 'a-z' < file.txt将文件中的大写字母转换为小写。
diff:
-
用法:
diff [选项] 文件1 文件2 -
功能:比较两个文件的差异。
-
举例:
diff file1.txt file2.txt比较两个文件的差异。
vimdiff:
-
用法:
vimdiff 文件1 文件2 -
功能:使用 vim 编辑器比较两个文件的差异。
-
举例:
vimdiff file1.txt file2.txt使用 vim 比较两个文件。#场景:备份文件快速同步 dp
paste:
- 用法:
paste [选项] 文件1 文件2 - 功能:合并文件的行。
- 举例:
paste file1.txt file2.txt合并两个文件的行。
iconv:
- 用法:
iconv [选项] -f 源编码 -t 目标编码 文件 - 功能:转换文件的字符编码。
- 举例:
iconv -f GBK -t UTF-8 file.txt转换文件编码。
rev:
- 用法:
rev 文件 - 功能:反转文件的行。
- 举例:
rev file.txt反转file.txt的每一行。
join:
- 用法:
join [选项] 文件1 文件2 - 功能:合并两个文件的行。
- 举例:
join file1.txt file2.txt合并两个文件的行。
4. 文件压缩及解压缩命令
tar:
- 用法:
tar [选项] 文件 - 功能:归档和解归档文件。
- 举例:
tar -czvf archive.tar.gz dir/压缩目录为 tar.gz 文件。
unzip:
- 用法:
unzip 文件.zip - 功能:解压 ZIP 文件。
- 举例:
unzip archive.zip解压archive.zip文件。
gzip:
- 用法:
gzip [选项] 文件 - 功能:压缩文件为 gzip 格式。
- 举例:
gzip file.txt压缩file.txt为file.txt.gz。
zip:
- 用法:
zip [选项] 压缩文件.zip 文件 - 功能:压缩文件为 ZIP 格式。
- 举例:
zip archive.zip file.txt将file.txt压缩到archive.zip。
5. 信息显示命令
uname:
- 用法:
uname [选项] - 功能:显示系统信息。
- 举例:
uname -a显示所有系统信息。
hostname:
- 用法:
hostname [选项] - 功能:显示或设置主机名。
- 举例:
hostname显示当前主机名。
#扩展
提取网卡IP地址
ifconfig ens33 | awk 'NR==2'
ifconfig ens33 | awk 'NR==2{print $2}'
hostname -I | awk '{print $1}'
uptime:
- 用法:
uptime - 功能:显示系统运行时间。
- 举例:
uptime显示系统运行时间和负载。
#场景:如何查看负载,若负载为1(满了,如何解决),负载一般与cpu核数关联
#负载是代表整个系统的繁忙程度
使用top、uptime查看系统负载信息,若负载满了就用top查看具体是哪一个进程导致的。
找到问题后进行评估处理(联合开发)
系统处于可运行状态和不可中断状态的平均活跃进程数。就代表系统负载系统负载跟CPU的。使用率没有关系,它只有两个,一个是计算型啊,一个是计,一个叫密集型进程
系统负载跟CPU的。使用率没有关系,它只有两个,一个是计算型啊,一个是计,一个叫密集型进程,
还有一个叫计算型进程,还有一个叫ao型进程。只有这三点会导致这个负载比较高,但这属于性能分析,包括也比较比较深入的一个linux里面的一个问题
stat:
- 用法:
stat 文件 - 功能:显示文件或文件系统的状态。
- 举例:
stat file.txt显示file.txt的详细信息。
du:
- 用法:
du [选项] 文件或目录 - 功能:显示磁盘使用情况。
- 举例:
du -sh /home显示/home目录的磁盘使用情况。
-s, --summarize
对每个参数只显示总和。
-h, --human-readable
为每个数附加一个表示大小单位的字母
```bash
#场景(当磁盘空间不足时定位具体是哪个目录)
du -sh ./* | sort -hr
[root@Kanyun /]# du -sh | ./*
-bash: ./bin: 是一个目录
du: 无法访问"./proc/52355/task/52355/fd/3": 没有那个文件或目录
4.5G ./usr
1.6G ./var
153M ./boot
60M ./etc
43M ./root
13M ./run
416K ./tmp
28K ./home
0 ./sys
0 ./srv
#解释
/var #日志
/usr #app
```
df:
- 用法:
df [选项] - 功能:显示文件系统的磁盘空间使用情况。
- 举例:
df -h显示所有文件系统的磁盘使用情况。
#场景:如果磁盘没满,但是无法创建文件了
用df -i 查看是否是inode满了
如果满了首先考虑在对应磁盘目录下删除一些空文件
find ./ -type f -empty
find ./ -type f -empty | xargs rm -rf
其次删除一些小文件
find ./ -type f -size +100k
top:
- 用法:
top - 功能:实时显示系统进程和资源使用情况。
- 举例:
top启动系统监控工具。
#场景
排查问题前,首先查看是否是系统资源瓶颈问题,使用top(系统负载、cup、进程信息)、df -h查看磁盘资源
date:
- 用法:
date [选项] - 功能:显示或设置系统日期和时间。
- 举例:
date显示当前日期和时间。
free:
- 用法:
free [选项] - 功能:显示系统的内存使用情况。
- 举例:
free -h显示系统的内存使用情况。
free
total used free shared buff/cache available
Mem: 3861288 711228 1486724 14752 1663336 2904900
Swap: 2097148 0 2097148
#读cache ->
#写buffer -> I/O ->disk
dmesg:
- 用法:
dmesg [选项] - 功能:显示内核日志。
- 举例:
dmesg显示内核日志信息。
cal:
- 用法:
cal [选项] - 功能:显示日历。
- 举例:
cal显示当前月的日历。
6. 搜索图像文件命令
which:
- 用法:
which 命令名 - 功能:显示命令的路径。
- 举例:
which ls显示ls命令的路径。
whereis:
- 用法:
whereis 命令名 - 功能:显示命令的路径、源码和手册位置。
- 举例:
whereis grep显示grep命令的相关路径。
find:
- 用法:
find [路径] [选项] [表达式] - 功能:在指定目录中搜索文件。
- 举例:
find /home -name "*.txt"查找/home下所有.txt文件。
#场景:查找一个服务的所有日志文件
如果不知道日志文件名称,先搜xx日志,如:Nginx日志
find ./ -type f -name "*access.log" #不知道路径从根开始性能较差
find /var/log/nginx/ -type f -name "*access.log"
locate:
- 用法:
locate 文件名 - 功能:快速查找文件(基于数据库)。
- 举例:
locate file.txt查找系统中所有名为file.txt的文件。
7. 用户管理命令
useradd:
- 用法:
useradd [选项] 用户名 - 功能:添加新用户。
- 举例:
useradd user1添加用户user1。
userdel:
- 用法:
userdel [选项] 用户名 - 功能:删除用户。
- 举例:
userdel user1删除用户user1。
passwd:
- 用法:
passwd [选项] 用户名 - 功能:更改用户密码。
- 举例:
passwd user1更改用户user1的密码。
id:
- 用法:
id [选项] 用户名 - 功能:显示用户的 ID 信息。
- 举例:
id user1显示用户user1的 UID 和 GID。
su:
- 用法:
su [选项] 用户名 - 功能:切换用户身份。
- 举例:
su - root切换到 root 用户。
visudo:
- 用法:
visudo - 功能:编辑 sudo 权限配置文件。
- 举例:
visudo编辑/etc/sudoers文件。
sudo:
- 用法:
sudo [选项] 命令 - 功能:以超级用户权限执行命令。
- 举例:
sudo apt-get update以 root 权限更新包列表。
usermod:
- 用法:
usermod [选项] 用户名 - 功能:修改用户属性。
- 举例:
usermod -g 1000 user1更改用户user1的主组。
groupadd:
- 用法:
groupadd [选项] 组名 - 功能:添加新组。
- 举例:
groupadd group1添加组group1。
chage:
- 用法:
chage [选项] 用户名 - 功能:更改用户密码到期信息。
- 举例:
chage -l user1显示用户user1的密码到期信息。
8. 基础网络操作命令
telnet:
- 用法:
telnet [选项] 主机 [端口] - 功能:使用 Telnet 协议连接到远程主机。
- 举例:
telnet example.com 23连接到远程主机的 Telnet 服务。
nc:
- 用法:
nc [选项] 主机 端口 - 功能:网络工具,用于读写网络连接。
- 举例:
nc -l 1234监听本地端口 1234。
ssh:
- 用法:
ssh [选项] 用户名@主机 - 功能:安全地连接到远程主机。
- 举例:
ssh user@example.com连接到远程主机。
scp:
- 用法:
scp [选项] 源文件 用户名@主机:路径 - 功能:安全地复制文件到远程主机。
- 举例:
scp file.txt user@example.com:/home/user复制文件到远程主机。
wget:
- 用法:
wget [选项] URL - 功能:从网络下载文件。
- 举例:
wget http://example.com/file.txt下载文件。
ping:
- 用法:
ping [选项] 主机 - 功能:测试网络连接。
- 举例:
ping example.com测试与远程主机的连接。
ifconfig:
- 用法:
ifconfig [选项] - 功能:配置和显示网络接口。
- 举例:
ifconfig显示所有网络接口信息。
netstat:
-
用法:
netstat [选项] -
功能:显示网络连接和监听端口。
-
常用:
-antu 、 -lnutp:查看监听端口 -
举例:`netstat -lntu 显示所有监听的 TCP 和 UDP 端口。
#过滤网络TCP连接状态 netstat -antup | egrep ssh -a或--all:显示所有连线中的Socket; -l或--listening:显示监控中的服务器的Socket; -n或--numeric:直接使用ip地址,而不通过域名服务器; -p或--programs:显示正在使用Socket的程序识别码和程序名称; -t或--tcp:显示TCP传输协议的连线状况; -u或--udp:显示UDP传输协议的连线状况;
route:
- 用法:
route [选项] - 功能:显示和操作路由表。
- 举例:
route -n显示路由表。
ifup:
- 用法:
ifup 接口 - 功能:启动指定网络接口。
- 举例:
ifup eth0启动eth0接口。
ifdown:
- 用法:
ifdown 接口 - 功能:停止指定网络接口。
- 举例:
ifdown eth0停止eth0接口。
9. 深入网络操作命令
nmap:
- 用法:
nmap [选项] 主机 - 功能:网络扫描工具。
- 举例:
nmap example.com扫描远程主机的开放端口。
#默认1~65535
lsof (List Open Files):
- 用法:
lsof [选项] - 功能:显示打开的文件和网络连接(Linux一切皆文件)。
- 举例:
lsof -i :80显示监听 80 端口的进程。
lsof -i tcp
ps aux | egrep nginx
lsof | egrep nginx
#解释
/usr/sbin/nginx #启动目录,下面的.so是一些依赖的系统共享库
/dev/null #Linux黑洞
- 用法:rm $badname 2>/dev/null,
- 解释:https://blog.csdn.net/weixin_44388689/article/details/120705959
常见用法
查看所有打开的文件:lsof
查看特定进程打开的文件:lsof -p [PID]([PID] 为进程 ID)
查看特定用户打开的文件:lsof -u [用户名]
查看特定端口相关的进程:lsof -i :[端口号]
查看特定文件系统上的打开文件:lsof [文件系统路径]
nslookup:
- 用法:
nslookup [选项] 域名 - 功能:查询 DNS 信息。
- 举例:
nslookup example.com查看域名的 DNS 记录。
nslookup www.baidu.com
Server: 114.114.114.114
Address: 114.114.114.114#53
Non-authoritative answer:
Name: www.baidu.com
Address: 39.156.70.239
Name: www.baidu.com
Address: 39.156.70.46
Name: www.baidu.com
Address: 2409:8c00:6c21:118b:0:ff:b0e8:f003
Name: www.baidu.com
Address: 2409:8c00:6c21:11eb:0:ff:b0bf:59ca
说明通过域名服务器的53端口进行解析
抓包
tcpdump -i any port 53 -nn
#场景:DNS解析超时
第一,你检查你自己的DNS有没有配置`vim /etc/resolv.conf`
#法二,strace
strace -e open,connect,socket nslookup www.baidu.com
#so都是系统文件不用关注,查看打开了其他哪些文件,然后进行下一步
dig:
- 用法:
dig [选项] 域名 - 功能:查询 DNS 信息。
- 举例:
dig example.com查看域名的 DNS 记录。
traceroute:
- 用法:
traceroute [选项] 主机 - 功能:跟踪数据包的路由路径(排除故障时用)。
- 举例:
traceroute example.com显示到远程主机的路由路径。
#场景:做压力测试,机房把请求清洗了,用traceroute查看是在哪一个路由器处理故障,进行处理
mtr
tcpdump:
- 用法:
tcpdump [选项] - 功能:网络流量捕获和分析的命令行工具(网络抓包工具)。
- 举例:
tcpdump -i eth0抓取eth0接口的网络数据包。
#tty1
tcpdump -i any not arp and not port 22 -w dns.pcap
-i interface,指定tcpdump 需要监听的接口.
-w 把包数据直接写入文件而不进行分析和打印输出. 这些包数据可在随后通过-r 选项来重新读入并进行分析和打印.
sz dns.capa
拖入wireshark,选择DNS或TCP协议包,分析追踪流。
如DNS查看应答的域名解析ip,进行访问查看进一步分析
tcpdump -r dns.pcap #将封装包数据进行读入并分析、打印
#tty2
# ping www.baidu.com
# traceroute www.baidu.com
nslookup www.baidu.com #查看DNS域名解析是否成功(域名解析正常,但并不保证网站实际上线)
nc -v www.baidu.com 80 #测试网络是否在线(80:http,443:https)
# Wireshark过滤策略
tcp.port==80
ip.addr==192.168.109.3 and udp.port==53
mail:
- 用法:
mail [选项] - 功能:发送和接收电子邮件。
- 举例:
mail user@example.com发送邮件。
mutt:
- 用法:
mutt [选项] - 功能:文本模式的邮件客户端。
- 举例:
mutt -s "Subject" user@example.com发送邮件。
host:
- 用法:
host [选项] 域名 - 功能:查询域名的 DNS 记录。
- 举例:
host example.com查看域名的 DNS 记录。
10. 有关磁盘与文件系统的命令
mount:
-
用法:
mount [选项] 设备 挂载点 -
功能:挂载文件系统。
-
举例:
mount /dev/sdb1 /mnt挂载/dev/sdb1到/mnt。#场景 如果公司让你去买一台服务器,你买了这个服务器以后,你得问一下需求,要不要再去买一张新的磁盘?如果是默认的磁盘,它是不会存在这个分区的过程,如果是新的磁盘,你就要去分区格式化挂载这个过程
umount:
- 用法:
umount [选项] 挂载点或设备 - 功能:卸载已挂载的文件系统。
- 举例:
umount /mnt卸载/mnt挂载点。
df
#场景,系统资源监控报警脚本
df -h | awk '/boot/{print $5}' | sed -r 's#%##g'
used=$(df -h | awk '/boot/{print $5}' | sed -r 's#%##g')
[ $used -gt 18 ] && echo "Warning" || echo "normol"
#扩展(监控/)
df -h | awk '$NF == "/"{print $5}' | sed -r 's#%##g'
#解释
$NF:awk 中的 $NF 表示当前行的最后一个字段(NF 是字段总数,$NF 是最后一个字段的内容)。在 df -h 的输出中,最后一个字段是挂载点。
== "/":精确匹配最后一个字段是否等于 /。
s#%##g 详解
s:表示替换操作。
#:分隔符。sed 默认使用 / 作为分隔符,但也可以用其他字符代替,以避免和模式中的 / 冲突。这里使用 # 作为分隔符。
%:模式,表示要匹配的内容是 % 符号。
#:第二个分隔符,分隔模式和替换内容。
#:替换内容为空,表示将匹配到的 % 替换为空字符串。
g:全局替换标志,表示替换每一行中所有匹配的 %。
fdisk:
- 用法:
fdisk [选项] 设备 - 功能:磁盘分区工具。
- 举例:
fdisk /dev/sda管理/dev/sda的分区。
resize2fs:
- 用法:
resize2fs [选项] 设备 - 功能:调整文件系统大小。
- 举例:
resize2fs /dev/sda1调整/dev/sda1的文件系统大小。
- **`fsck`**:
- **用法**:`fsck [选项] 设备`
- **功能**:检查和修复文件系统。
- **举例**:`fsck /dev/sdb1` 检查和修复 `/dev/sdb1` 文件系统。
- **`dd`**:
- **用法**:`dd [选项] if=输入文件 of=输出文件`
- **功能**:转换和复制文件。
- **举例**:`dd if=/dev/sda of=/dev/sdb` 复制磁盘内容。
- **`dumpe2fs`**:
- **用法**:`dumpe2fs [选项] 设备`
- **功能**:显示 ext2/ext3/ext4 文件系统的信息。
- **举例**:`dumpe2fs /dev/sda1` 显示 `/dev/sda1` 的文件系统信息。
- **`dump`**:
- **用法**:`dump [选项] 文件系统`
- **功能**:备份文件系统。
- **举例**:`dump -0u /dev/sda1` 备份 `/dev/sda1` 文件系统。
- **`parted`**:
- **用法**:`parted [选项] 设备`
- **功能**:磁盘分区工具。
- **举例**:`parted /dev/sda` 管理 `/dev/sda` 的分区。
- **`mkfs`**:
- **用法**:`mkfs [选项] 设备`
- **功能**:创建文件系统。
- **举例**:`mkfs.ext4 /dev/sdb1` 在 `/dev/sdb1` 上创建 ext4 文件系统。
- **`partprobe`**:
- **用法**:`partprobe [选项] 设备`
- **功能**:通知内核分区表已更改。
- **举例**:`partprobe /dev/sda` 通知内核 `/dev/sda` 的分区表已更改。
- **`e2fsck`**:
- **用法**:`e2fsck [选项] 设备`
- **功能**:检查和修复 ext2/ext3/ext4 文件系统。
- **举例**:`e2fsck /dev/sda1` 检查和修复 `/dev/sda1` 文件系统。
- **`mkswap`**:
- **用法**:`mkswap [选项] 设备`
- **功能**:创建 swap 分区。
- **举例**:`mkswap /dev/sdb1` 在 `/dev/sdb1` 上创建 swap 分区。
- **`swapon`**:
- **用法**:`swapon [选项] 设备`
- **功能**:启用 swap 分区。
- **举例**:`swapon /dev/sdb1` 启用 `/dev/sdb1` 作为 swap 分区。
- **`sync`**:
- **用法**:`sync`
- **功能**:同步文件系统。
- **举例**:`sync` 同步所有挂起的 I/O 操作。
11. 关机和查看系统信息的命令
shutdown:
- 用法:
shutdown [选项] 时间 - 功能:关机或重启系统。
- 举例:
shutdown -h now立即关机。
halt:
- 用法:
halt - 功能:立即关机。
- 举例:
halt关闭系统。
init:
- 用法:
init [选项] - 功能:更改系统的运行级别。
- 举例:
init 0关机。
12. 系统管理相关命令
uptime:
- 用法:
uptime - 功能:显示系统运行时间。
- 举例:
uptime显示系统运行时间和负载。
[root@Kanyun /]# uptime
01:20:20 up 51 min, 2 users, load average: 0.00, 0.02, 0.05
#使用场景
检查系统运行时长,判断系统是否需要重启。
查看系统负载,评估系统性能和压力。
监控服务器状态,用于系统管理和故障排查。
在自动化脚本中获取系统运行时间和负载信息。
#解释
系统负载表示任务队列中等待 CPU 的任务数。负载值低于 CPU 核心数表示系统运行良好,高于核心数则可能表示系统压力较大。
top:
- 用法:
top - 功能:显示系统进程和资源使用情况。
- 举例:
top启动系统监控工具。
free:
- 用法:
free [选项] - 功能:显示系统的内存使用情况。
- 举例:
free -h显示系统的内存使用情况。
vmstat:
- 用法:
vmstat [选项] - 功能:报告虚拟内存统计信息。
- 举例:
vmstat 1每秒更新一次虚拟内存统计信息。
#场景:通过vmstat查看系统进程是否处于竞争调度
[root@Kanyun /]vmstat 2 5 #每二秒显示一次系统内存的统计信息,总共5次
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 2275432 1080 751680 0 0 16 11 91 100 0 0 99 0 0
0 0 0 2276216 1080 751764 0 0 0 32 479 505 0 0 100 0 0
0 0 0 2275400 1080 751848 0 0 0 58 794 874 0 1 99 0 0
0 0 0 2276556 1080 751888 0 0 0 65 799 847 0 1 99 0 0
0 0 0 2276968 1080 751972 0 0 0 32 456 500 0 0 100 0 0
[root@Kanyun /]# lscpu | egrep CPU
CPU op-mode(s): 32-bit, 64-bit
CPU(s): 8
On-line CPU(s) list: 0-7
CPU 系列: 6
CPU MHz: 2304.008
NUMA 节点0 CPU: 0-7
#解释:只有8颗CPU,当我的这个进程数达到8的时候,系统负载满,系统已经处于资源竞争的一个状态,进程队列已经满了,满了就会竞争、调度、会阻塞,比较慢。
mpstat:
- 用法:
mpstat [选项] - 功能:报告每个处理器的使用情况。
- 举例:
mpstat -P ALL显示所有处理器的使用情况。
[root@Kanyun /]# mpstat -P ALL
Linux 3.10.0-1160.el7.x86_64 (Kanyun) 2025年05月17日 _x86_64_ (8 CPU)
01时34分54秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
01时34分54秒 all 0.03 0.00 0.47 0.01 0.00 0.03 0.00 0.00 0.00 99.46
01时34分54秒 0 0.05 0.00 0.34 0.01 0.00 0.06 0.00 0.00 0.00 99.54
01时34分54秒 1 0.03 0.00 0.60 0.00 0.00 0.02 0.00 0.00 0.00 99.34
.....
#使用场景
CPU 性能监控 :查看每个 CPU 核心的使用情况,包括用户空间、系统空间、空闲等状态。
性能瓶颈分析 :确定是否存在特定 CPU 核心过载或空闲的情况。
负载均衡检查 :在多核系统中,检查负载是否均匀分布在各个 CPU 核心上。
系统调优 :根据 CPU 使用情况调整系统配置或任务分配。
iostat:
- 用法:
iostat [选项] - 功能:报告 CPU 使用情况和 I/O 设备统计使用情况。
- 举例:
iostat 2每两秒更新一次 I/O 统计信息。
#注意事项
输出结果会随系统负载变化而变化,需结合多次采样综合分析。
%iowait 值较高可能表明磁盘 I/O 存在瓶颈。
%idle 值较低且 %user 或 %system 值较高可能表示 CPU 资源紧张。
可通过指定设备名(如 iostat -x sda)获取更详细的统计信息。
在分析数据时,需结合系统实际应用场景和其他性能监控工具的结果
sar:
- 用法:
sar [选项] - 功能:报告系统活动统计信息。
- 举例:
sar -u显示 CPU 使用情况。
chkconfig:
- 用法:
chkconfig [选项] 服务名 - 功能:管理服务的启动配置。
- 举例:
chkconfig sshd on设置sshd服务开机启动。
13. 系统安全相关命令
chmod:
- 用法:
chmod [选项] 模式 文件 - 功能:更改文件的权限。
- 举例:
chmod 755 file.txt设置file.txt的权限为rwxr-xr-x。
#场景(更改文件/目录权限)
默认:文件644,目录755
[root@Kanyun lnf_test]# stat ./lnf
文件:"./lnf"
大小:325 块:8 IO 块:4096 普通文件
设备:fd00h/64768d Inode:17619675 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
[root@Kanyun lnf_test]# stat test/
文件:"test/"
大小:142 块:0 IO 块:4096 目录
设备:fd00h/64768d Inode:34523728 硬链接:2
权限:(0755/drwxr-xr-x) Uid:( 0/ root) Gid:( 0/ root)
#每个权限位由3个二进制数组成,最大表示111:7(rwx)
#注
一般会给脚本一个执行权限
- chmod + x file
- chmod 755 file
chown:
- 用法:
chown [选项] 用户:组 文件 - 功能:更改文件的所有者和组。
- 举例:
chown user1:group1 file.txt更改file.txt的所有者和组。
#场景
useradd test
chown test.test file
sudo:
- 用法:
sudo [选项] 命令 - 功能:以超级用户权限执行命令。
- 举例:
sudo apt-get update以 root 权限更新包列表。
#拥有所有权限
需要先用root用户在visudo中添加指定用户的sudo权限
visudo
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
test ALL=(ALL) ALL
[test@Kanyun root]$ sudo -l
我们信任您已经从系统管理员那里了解了日常注意事项。
总结起来无外乎这三点:
#1) 尊重别人的隐私。
#2) 输入前要先考虑(后果和风险)。
#3) 权力越大,责任越大。
[sudo] test 的密码:
匹配 %2$s 上 %1$s 的默认条目:
!visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR
LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT
LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET
XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
用户 test 可以在 Kanyun 上运行以下命令:
(ALL) ALL
chgrp:
- 用法:
chgrp [选项] 组 文件 - 功能:更改文件的组。
- 举例:
chgrp group1 file.txt更改file.txt的组。
chage:
- 用法:
chage [选项] 用户名 - 功能:更改用户密码到期信息。
- 举例:
chage -l user1显示用户user1的密码到期信息。
passwd:
- 用法:
passwd [选项] 用户名 - 功能:更改用户密码。
- 举例:
passwd user1更改用户user1的密码。
su:
- 用法:
su [选项] 用户名 - 功能:切换用户身份。
- 举例:
su - root切换到 root 用户。
| 特性 | su root |
su - root |
|---|---|---|
| 环境变量 | 不改变,保留当前用户的环境变量 | 改变,加载 root 用户的环境变量 |
| 当前工作目录 | 保持不变 | 切换到 root 用户的主目录 |
| 配置文件加载 | 不加载 root 用户的配置文件 |
加载 root 用户的配置文件 |
| 使用场景 | 临时以 root 权限执行命令 |
完全切换到 root 用户环境 |
umask:
- 用法:
umask [选项] - 功能:显示或设置文件创建掩码。
- 举例:
umask显示当前的文件创建掩码。
chattr:
- 用法:
chattr [选项] 文件 - 功能:更改文件属性。
- 举例:
chattr +i file.txt设置文件为不可修改。
lsattr:
- 用法:
lsattr [选项] 文件 - 功能:显示文件属性。
- 举例:
lsattr file.txt显示file.txt的属性。
14. 查看系统用户登陆信息的命令
whoami:
- 用法:
whoami - 功能:显示当前用户的身份。
- 举例:
whoami显示当前登录的用户名。
who:
- 用法:
who - 功能:显示当前登录的用户信息。
- 举例:
who显示当前登录的用户列表。
w:
- 用法:
w - 功能:显示当前登录的用户和系统信息。
- 举例:
w显示当前登录的用户和系统负载。
last:
- 用法:
last - 功能:显示用户的登录历史。
- 举例:
last显示所有用户的登录历史。
last -n 5 #显示最近五次
lastlog:
- 用法:
lastlog - 功能:显示所有用户的最后登录信息。
- 举例:
lastlog显示所有用户的最后登录时间。
users:
- 用法:
users - 功能:显示当前登录的用户列表。
- 举例:
users显示当前登录的用户列表。
finger:
- 用法:
finger [选项] 用户名 - 功能:显示用户的信息。
- 举例:
finger user1显示用户user1的详细信息。
15. 其它命令
echo:
-
用法:
echo [选项] 文本 -
功能:输出文本。
-
举例:
echo "Hello, World!"输出Hello, World!。 -
单引号:所见所得 双引号:解析变量 echo -e "hello \n 133" -e :启用转义(默认-E不启用)
rpm:
- 用法:
rpm [选项] 包名 - 功能:管理 RPM 包。
- 举例:
rpm -ivh package.rpm安装 RPM 包。
#常用
rpm -qa | egrep Nginx #查询
rpm -e Nginx..... #删除
rpm -ivh Nginx..... #安装
rpm -ql Nginx #显示安装目录
yum remove Nginx
#注:为什么用yum而不用rpm包安装
yum可自动解决依赖问题
rpm一般在无网环境使用
-a:查询所有套件;
-e<套件档>或--erase<套件档>:删除指定的套件;
-h或--hash:套件安装时列出标记;
-i:显示套件的相关信息;
-i<套件档>或--install<套件档>:安装指定的套件档;
-q:使用询问模式,当遇到任何问题时,rpm指令会先询问用户;
-v:显示指令执行过程;
-l:显示套件的文件列表;
yum:
- 用法:
yum [选项] - 功能:Yellowdog Updater Modified,用于管理 RPM 包。
- 举例:
yum install package安装包。
watch:
- 用法:
watch [选项] 命令 - 功能:定期执行指定命令并显示输出。
- 举例:
watch -n 2 uptime每两秒显示一次系统运行时间。
watch -d uptime
-d 或--differences 用-d或--differences 选项watch 会高亮显示变化的区域。
date:
- 用法:
date [选项] - 功能:显示或设置系统日期和时间。
- 举例:
date显示当前日期和时间。
#场景1:当date显示时间错误时,同步网络时间
- 手动设置:date -s "2024-11-15 14:30:00"
- 网络同步:
[root@Kanyun ~]# ll /etc/localtime (查看时区,默认北美洲)
lrwxrwxrwx 1 root root 33 May 11 19:30 /etc/localtime -> /usr/share/zoneinfo/Asia/Shanghai
#如果不是Shanghai需要修改
unlink /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
crontab -e
*/5 * * * * ntpdate ntp1.aliyun.com
crontab -l
ntpdate ntp1.aliyun.com
date
#场景描述
描述一个故障,在搭建整个监控系统,落地时发现偶尔有部分的节点监控数据异常,抓不到。最后,经过排查我们发现,部分节点没有进行时间同步,所以在落地整个监控系统的时候,必要的条件是实现所有节点的时间同步。我们有一个自建的时间同步服务器,也有一个备用的公网的时间同步。实现这个可用性,保证所有的节点五分钟执行一次
#场景2:用于编写脚本(文件时间戳)
date +%F-%T #年月日+时分秒
cp -r test test_bak$(date +%F-%T | sed -r 's#:#-#g')
- test_bak2025-05-16-19-22-59
#场景3:时间戳(脚本处理)
date +%s
clear:
- 用法:
clear - 功能:清除终端屏幕。
- 举例:
clear清除终端屏幕。
history:
- 用法:
history - 功能:显示命令历史。
- 举例:
history显示最近执行的命令列表。
history 5 #显示最近5条
history -d <指定行号> #删除某条记录
-c 清除记录
-d<编号>[n] 删除指定n条记录
# history家目录日志
[root@Kanyun ~]# cat .bash_history
nohup:
- 用法:
nohup 命令 - 功能:忽略挂起信号运行命令。
- 举例:
nohup long_process.sh在后台运行长时间进程。
#场景:日志后台记录
vim dates.sh
#!/bin/bash
tmp="./tmp"
touch $tmp #确保文件存在
while true
do
now=$(date)"
echo "now:$now" >> $tmpe
sleep 1
done
sh dates.sh
nohup sh dates.sh & #后台运行(终端关闭不影响)
日志文件输出在./nohup.out
pa aux | egrep dates.sh
kill <进程号>
xargs:
- 用法:
xargs [选项] 命令 - 功能:构建和执行命令(将前面的标准输出作为后边命令的参数)。
- 举例:
ls | xargs rm删除列出的文件。
#场景:为/etc/passwd中的每一个用户创建一个目录
cat /etc/passwd | awk -F: '{print $1}' | xargs mkdir -p
cat /etc/passwd | awk -F: '{print $1}' | xargs -n 4 |column -t #按几列输出
-F fs fs指定输入分隔符,fs可以是字符串或正则表达式,如-F:,默认的分隔符是连续的空格或制表符
time:
- 用法:
time 命令 - 功能:测量命令的执行时间。
- 举例:
time ls -l测量ls -l的执行时间。
bc/expr:
- 用法:
bc [选项] - 功能:计算器(写脚本时用于计算)。
- 举例:
echo "2+2" | bc计算2+2。
printf:
- 用法:
printf [选项] 格式字符串 - 功能:格式化输出。
- 举例:
printf "Hello, %s\n" "World"输出Hello, World。
alias:
- 用法:
alias [选项] 别名=命令 - 功能:创建命令别名。
- 举例:
alias ll='ls -l'创建ll作为ls -l的别名。
unalias:
- 用法:
unalias 别名 - 功能:删除命令别名。
- 举例:
unalias ll删除ll别名。
eject:
- 用法:
eject [选项] 设备 - 功能:弹出介质。
- 举例:
eject /dev/cdrom弹出光盘。
nc:
- 用法:
nc [选项] 主机 端口 - 功能:网络工具,用于读写网络连接。
- 举例:
nc -l 1234监听本地端口 1234。
exec:
- 用法:
exec [选项] 命令 - 功能:执行命令。
- 举例:
exec cat file.txt执行cat file.txt。
export:
- 用法:
export 变量名=值 - 功能:设置环境变量。
- 举例:
export PATH=$PATH:/new/path添加新路径到环境变量。
unset:
- 用法:
unset 变量名 - 功能:删除变量或函数。
- 举例:
unset var1删除变量var1。
type:
- 用法:
type 命令名 - 功能:显示命令的类型。
- 举例:
type ls显示ls命令的类型。
16. 系统性能监视高级命令
top:
- 用法:
top - 功能:显示系统进程和资源使用情况。
- 举例:
top启动系统监控工具。
free:
- 用法:
free [选项] - 功能:显示系统的内存使用情况。
- 举例:
free -h显示系统的内存使用情况。
vmstat:
- 用法:
vmstat [选项] - 功能:报告虚拟内存统计信息。
- 举例:
vmstat 1每秒更新一次虚拟内存统计信息。
mpstat:
- 用法:
mpstat [选项] - 功能:报告每个处理器的使用情况。
- 举例:
mpstat -P ALL显示所有处理器的使用情况。
iostat:
- 用法:
iostat [选项] - 功能:报告 CPU 和 I/O 使用情况。
- 举例:
iostat 2每两秒更新一次 I/O 统计信息。
sar:
- 用法:
sar [选项] - 功能:报告系统活动统计信息。
- 举例:
sar -u显示 CPU 使用情况。
ipcs:
- 用法:
ipcs [选项] - 功能:报告 IPC 对象的状态。
- 举例:
ipcs -a显示所有 IPC 对象。
ipcrm:
- 用法:
ipcrm [选项] - 功能:删除 IPC 对象。
- 举例:
ipcrm -m 1234删除消息队列 1234。
lsof:
- 用法:
lsof [选项] - 功能:显示打开的文件和网络连接。
- 举例:
lsof -i :80显示监听 80 端口的进程。
strace:
- 用法:
strace [选项] 命令 - 功能:跟踪系统调用。
- 举例:
strace ls跟踪ls命令的系统调用。
ltrace:
- 用法:
ltrace [选项] 命令 - 功能:跟踪库函数调用。
- 举例:
ltrace ls跟踪ls命令的库函数调用。
vmstat:
- 用法:
vmstat [选项] - 功能:报告虚拟内存统计信息。
- 举例:
vmstat 1每秒更新一次虚拟内存统计信息。
runlevel:
- 用法:
runlevel - 功能:显示当前运行级别。
- 举例:
runlevel显示当前运行级别。
init:
- 用法:
init [选项] - 功能:更改系统的运行级别。
- 举例:
init 3更改运行级别为 3。
service:
- 用法:
service 服务名 [选项] - 功能:管理系统服务。
- 举例:
service apache2 start启动 apache2 服务。
17. 关机/重启/注销命令
shutdown:
- 用法:
shutdown [选项] 时间 - 功能:关机或重启系统。
- 举例:
shutdown -r now立即重启系统。
init:
- 用法:
init [选项] - 功能:更改系统的运行级别。
- 举例:
init 0关机。
halt:
- 用法:
halt - 功能:立即关机。
- 举例:
halt关闭系统。
poweroff:
- 用法:
poweroff - 功能:立即关机。
- 举例:
poweroff关闭系统。
reboot:
- 用法:
reboot - 功能:立即重启系统。
- 举例:
reboot重启系统。
logout:
- 用法:
logout - 功能:退出当前会话。
- 举例:
logout退出当前登录会话。
exit:
- 用法:
exit - 功能:退出当前会话。
- 举例:
exit退出当前登录会话。
Ctrl+D:
- 用法:按下
Ctrl+D - 功能:快捷键退出当前会话。
- 举例:在终端中按下
Ctrl+D退出当前会话。
18. 进程管理
bg:
- 用法:
bg [作业号] - 功能:将作业放到后台运行。
- 举例:
bg 1将作业 1 放到后台运行。
fg:
- 用法:
fg [作业号] - 功能:将作业放到前台运行。
- 举例:
fg 1将作业 1 放到前台运行。
jobs:
- 用法:
jobs - 功能:显示后台作业列表。
- 举例:
jobs显示当前的后台作业。
kill:
- 用法:
kill [选项] 进程号 - 功能:发送信号到进程。
- 举例:
kill 1234向进程 1234 发送终止信号。
killall:
- 用法:
killall [选项] 进程名 - 功能:向所有同名进程发送信号。
- 举例:
killall httpd向所有 httpd 进程发送终止信号。
pkill:
- 用法:
pkill [选项] 模式 - 功能:根据模式匹配进程名并发送信号。
- 举例:
pkill httpd向所有 httpd 进程发送终止信号。
crontab:
- 用法:
crontab [选项] - 功能:设置定时任务。
- 举例:
crontab -e编辑当前用户的定时任务。
ps:
- 用法:
ps [选项] - 功能:显示进程状态。
- 举例:
ps aux显示所有进程。
pstree:
- 用法:
pstree [选项] - 功能:以树形结构显示进程。
- 举例:
pstree显示进程树。
top:
- 用法:
top - 功能:显示系统进程和资源使用情况。
- 举例:
top启动系统监控工具。
nice:
- 用法:
nice [选项] 命令 - 功能:设置进程的优先级。
- 举例:
nice -n 10 command设置命令的优先级为 10。
nohup:
- 用法:
nohup 命令 - 功能:忽略挂起信号运行命令。
- 举例:
nohup long_process.sh在后台运行长时间进程。
pgrep:
- 用法:
pgrep [选项] 模式 - 功能:查找匹配条件的进程。
- 举例:
pgrep httpd查找所有 httpd 进程。
strace:
- 用法:
strace [选项] 命令 - 功能:跟踪系统调用。
- 举例:
strace ls跟踪ls命令的系统调用。
ltrace:
- 用法:
ltrace [选项] 命令 - 功能:跟踪库函数调用。
- 举例:
ltrace ls跟踪ls命令的库函数调用。
vmstat:
- 用法:
vmstat [选项] - 功能:报告虚拟内存统计信息。
- 举例:
vmstat 1每秒更新一次虚拟内存统计信息。
runlevel:
- 用法:
runlevel - 功能:显示当前运行级别。
- 举例:
runlevel显示当前运行级别。
init:
- 用法:
init [选项] - 功能:更改系统的运行级别。
- 举例:
init 3更改运行级别为 3。
service:
- 用法:
service 服务名 [选项] - 功能:管理系统服务。
- 举例:
service apache2 start启动 apache2 服务。
19. 非常危险的系统命令
mv:
- 用法:
mv 源文件 目标文件 - 功能:移动或重命名文件。
- 举例:
mv /data/* /backup将/data目录下的所有文件移动到/backup。
rm:
- 用法:
rm [选项] 文件 - 功能:删除文件或目录。
- 举例:
rm -rf /data删除/data目录及其内容。
fdisk:
- 用法:
fdisk [选项] 设备 - 功能:磁盘分区工具。
- 举例:
fdisk /dev/sda管理/dev/sda的分区。
parted:
- 用法:
parted [选项] 设备 - 功能:磁盘分区工具。
- 举例:
parted /dev/sda管理/dev/sda的分区。
dd:
- 用法:
dd [选项] if=输入文件 of=输出文件 - 功能:转换和复制文件。
- 举例:
dd if=/dev/zero of=/dev/sda清空/dev/sda磁盘内容。
20. Linux 系统四位剑客
grep:
- 用法:
grep [选项] 模式 文件 - 功能:在文件中搜索指定模式。
- 举例:
grep "error" log.txt搜索程序中包含 "error" 的行。
egrep:
- 用法:
egrep [选项] 模式 文件 - 功能:扩展正则表达式搜索。
- 举例:
egrep "[0-9]" file.txt搜索功能包含数字的行。
sed:
- 用法:
sed [选项] '脚本' 文件 - 功能:流编辑器,用于文本处理。
- 举例:
sed 's/old/new/g' file.txt将old替换为new。
#场景1:替换字符
sed -ri 's/old/new/g' file
#场景2:提取字符并创建文件
[root@Kanyun tmpdir] cat ../tmp | sed -r 's/(now:Fri 16 May)(.*)(CST 2025)/\2/g' | xargs touch
awk:
- 用法:
awk [选项] '脚本' 文件 - 功能:文本处理工具,支持强大的文本处理功能。
- 举例:
awk -F: '{print $1}' /etc/passwd提取/etc/passwd的第 1 列。
awk -F: '{print $1}' /etc/passwd | xargs -n 2 | column -t
以上是《Linux 运维必须掌握150个命令讲解》中列出的命令的简要说明和常用命令举例。

浙公网安备 33010602011771号