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 linux 命令
- -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 644
复制代码- ll -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 目录的树形结构。
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 [选项] 文件
- 功能:更改文件属性。
- 举例:chattr +i /etc/fstab 设置文件系统挂载为不可修改。
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_SENT
复制代码
- 40 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:
grep命令详解:强大的文本搜索工具
- 用法: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 比较两个文件。
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 扫描远程主机的开放端口。
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 rootsu - 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 显示所有用户的登录历史。
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个命令讲解》中列出的命令的简要说明和常用命令举例。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |