前言
在前面的学习中,我们已成功在虚拟机中安装Linux,并通过Xshell实现了远程连接。今天,我们将一口气拿下PPT《更多的bash shell命令》中提到的所有核心命令,涵盖进程管理、磁盘挂载、数据排序搜索、文件压缩归档四大模块。
这些命令是Linux运维与开发的基本功——ps和top让你看清系统“健康状况”,kill让你掌控进程生死,mount/df/du让你玩转磁盘,sort/grep让你驾驭数据,tar/gzip让你搞定压缩。掌握它们,就掌握了Linux日常操作的半壁江山。
本文将通过Xshell中的实际操作,带你一步步掌握每个命令的用途、参数用法和实操技巧,并建立清晰的知识框架体系。所有截图要求统一列在文末,方便你一次性完成。
一、进程管理篇
1.1 ps —— 进程快照查看
命令简介
ps(Process Status)是Linux中最基础的进程查看命令,能够输出系统当前瞬间的进程状态快照。与动态更新的top不同,ps提供的是静态信息,适合在脚本中调用或快速查看特定进程。
常用参数
参数组合 含义 示例
ps aux 显示所有用户的所有进程(BSD风格) ps aux
ps -ef 显示所有进程的完整格式(System V风格) ps -ef
ps -u 用户名 显示指定用户的进程 ps -u root
ps -p PID 显示指定PID的进程 ps -p 1234
ps aux输出包含:USER(用户)、PID(进程ID)、%CPU(CPU占用率)、%MEM(内存占用率)、VSZ(虚拟内存大小)、RSS(物理内存大小)、TTY(终端)、STAT(进程状态)、START(启动时间)、TIME(累计CPU时间)、COMMAND(命令名)。
实操演示
bash
查看所有进程(最常用)
ps aux
查看所有进程的完整格式
ps -ef
查看root用户的进程
ps -u root
结合grep查找特定进程(见后文)
ps aux | grep sshd
1.2 top —— 实时系统监控
命令简介
top是Linux最强大的实时系统监控工具,动态显示进程资源占用情况,支持交互式操作。与ps不同,top提供实时更新的视图。
启动参数
参数 含义 示例
-d 秒 设置刷新间隔(默认3秒) top -d 1
-p PID 只监控指定进程 top -p 1234
-u 用户名 只显示某用户进程 top -u root
-b 批处理模式(适合脚本) top -b -n 1
-n 次数 刷新N次后退出 top -n 5
交互快捷键(运行top后使用)
按键 功能
P(Shift+P) 按CPU使用率排序(默认)
M(Shift+M) 按内存使用率排序
T(Shift+T) 按运行时间排序
1(数字) 显示所有CPU核心使用情况
E 切换内存单位(KB/MB/GB)
c 显示完整命令路径
k 终止进程(输入PID和信号)
q 退出
top输出解读
第1行:当前时间、运行时长、登录用户数、1/5/15分钟平均负载
第2行:进程总数、运行中、休眠、停止、僵尸进程数
第3行:CPU使用率——us(用户态)、sy(内核态)、id(空闲)、wa(I/O等待)
第4-5行:物理内存和交换分区使用情况
实操演示
bash
直接启动top
top
每秒刷新一次,监控root用户
top -d 1 -u root
批处理模式输出到文件
top -b -n 1 > top_snapshot.txt
1.3 kill —— 终止进程
命令简介
kill命令通过进程ID(PID)向进程发送信号,默认发送TERM(终止)信号。当进程无法正常终止时,可使用-9(SIGKILL)强制结束。
常用信号
信号 编号 含义
TERM 15 正常终止(默认)
KILL 9 强制终止(无法被捕获)
HUP 1 重新加载配置
实操演示
bash
查看所有可用信号
kill -l
正常终止进程(默认SIGTERM)
kill 1234
强制终止进程(慎用!)
kill -9 1234
或使用信号名称
kill -KILL 1234
⚠️ 警告:kill -9会强制终止进程,不给进程任何清理机会,可能导致数据丢失,应作为最后手段使用。
二、磁盘管理篇
2.1 mount —— 挂载文件系统
命令简介
Linux将所有磁盘都并入一个虚拟目录下,使用新存储设备前需要将其“挂载”到虚拟目录的某个位置。mount命令用于执行挂载操作。
常用参数
参数 含义 示例
-t 类型 指定文件系统类型(ext4、ntfs等) mount -t ext4 /dev/sdb1 /mnt
-o 选项 挂载选项(ro只读、rw读写等) mount -o rw /dev/sdb1 /mnt
实操演示
bash
查看当前已挂载的设备
mount
挂载ext4格式的磁盘到/mnt目录(需root权限)
sudo mount -t ext4 /dev/sdb1 /mnt
挂载时指定读写权限
sudo mount -o rw /dev/sdb1 /mnt
2.2 umount —— 卸载文件系统
命令简介
从系统移除可移动设备前,必须先卸载(umount)。如果有程序正在使用设备上的文件,系统将不允许卸载。
实操演示
bash
通过挂载点卸载
sudo umount /mnt
通过设备名卸载
sudo umount /dev/sdb1
💡 提示:若提示“设备繁忙”,可用lsof命令查看哪些进程正在使用该设备。
2.3 df —— 查看磁盘空间
命令简介
df(Disk Free)命令查看所有已挂载磁盘的使用情况。
常用参数
参数 含义
-h 以人类可读格式显示(KB/MB/GB)
-T 显示文件系统类型
实操演示
bash
查看所有磁盘使用情况
df
以易读格式查看
df -h
显示文件系统类型
df -Th
2.4 du —— 查看目录大小
命令简介
du(Disk Usage)命令显示某个目录的磁盘使用情况。
常用参数
参数 含义
-h 以人类可读格式显示
-s 只显示总计(不列出子目录)
-c 显示所有列出的文件总大小
实操演示
bash
查看当前目录下所有文件和子目录大小
du
以易读格式查看当前目录总大小
du -sh .
查看/home目录总大小
du -sh /home
查看当前目录下各子目录大小(易读格式)
du -h --max-depth=1
三、数据处理篇
3.1 sort —— 数据排序
命令简介
sort命令对文本内容按指定规则排序。默认按字符编码排序——即数字10会排在2前面。
常用参数
参数 含义 示例
-n 按数值大小排序(重要!) sort -n nums.txt
-r 反向排序(降序) sort -nr nums.txt
-k N 按第N列排序 sort -k 2 data.txt
-t 分隔符 指定列分隔符 sort -t ‘,’ -k 3 data.csv
-u 去除重复行 sort -u names.txt
-o 文件 输出到指定文件 sort -o out.txt in.txt
实操演示
练习1:数字排序
bash
创建测试文件
echo -e “5\n2\n8\n1\n10\n3” > nums.txt
查看内容
cat nums.txt
错误示范:字符排序(10排在2前面!)
sort nums.txt
正确示范:数值排序
sort -n nums.txt
数值降序
sort -nr nums.txt
练习2:按列排序
bash
创建多列数据
echo -e “Tom 25\nJerry 22\nAlice 27\nBob 30” > data.txt
按第2列(年龄)升序
sort -k 2 -n data.txt
按第2列降序
sort -k 2 -nr data.txt
练习3:去重
bash
echo -e “Tom\nJerry\nTom\nAlice\nJerry” > names.txt
sort -u names.txt
3.2 grep —— 文本搜索
命令简介
grep(Global Regular Expression Print)是Linux最强大的文本搜索工具,在文件或管道中查找匹配指定模式的行。
常用参数
参数 含义 示例
-i 忽略大小写 grep -i “error”
-v 反向匹配(排除) grep -v “debug”
-n 显示行号 grep -n “TODO”
-c 统计匹配行数 grep -c “404”
-w 整词匹配 grep -w “int”
-E 启用扩展正则表达式 grep -E “err|warn”
-A N 显示匹配行及后N行 grep -A 2 “Exception”
-B N 显示匹配行及前N行 grep -B 1 “crash”
正则表达式基础
元字符 含义 示例
^ 匹配行首 grep “^root”
$ 匹配行尾 grep “bash$”
. 匹配任意单个字符 grep “r…t”
- 前一个字符0次或多次 grep “go*”
| 逻辑或(需-E) grep -E “err|warn”
实操演示
bash
创建测试文件
echo -e “2024-01-01 INFO: User login success\n2024-01-02 ERROR: Connection failed\n2024-01-03 INFO: Data updated\n2024-01-04 WARNING: Disk space low” > test.log
基础搜索——查找ERROR
grep “ERROR” test.log
忽略大小写
grep -i “error” test.log
反向匹配(排除INFO)
grep -v “INFO” test.log
显示行号
grep -n “INFO” test.log
统计行数
grep -c “INFO” test.log
正则:以2024-01-02开头的行
grep “^2024-01-02” test.log
正则:以low结尾的行
grep “low$” test.log
与管道结合——查找sshd进程
ps aux | grep sshd
扩展正则:查找ERROR或WARNING
grep -E “ERROR|WARNING” test.log
四、压缩归档篇
4.1 gzip —— 文件压缩
命令简介
gzip采用LZ77无损压缩算法,压缩比可达60%-70%,比zip更高。压缩后文件后缀为.gz,源文件会被删除。
常用参数
参数 含义
-d 解压缩(等同于gunzip)
-1到-9 压缩级别(1最快/压缩比低,9最慢/压缩比高)
实操演示
bash
压缩文件(源文件被替换为.gz)
gzip file.txt
解压缩
gzip -d file.txt.gz
或
gunzip file.txt.gz
4.2 tar —— 归档打包
命令简介
tar(Tape Archive)将多个文件和目录打包成单个归档文件,常与gzip结合使用。
核心选项
选项 含义
-c 创建归档文件
-x 解压归档文件
-t 查看归档内容
-v 显示详细过程
-f 指定归档文件名
-z 通过gzip压缩/解压
实操演示
bash
打包(不压缩)home目录
tar -cvf usr.tar /home
打包并压缩(.tar.gz)
tar -czvf usr.tar.gz /home
解压.tar.gz文件
tar -xzvf usr.tar.gz
查看归档内容(分屏显示)
tar -tvf usr.tar | more
最常用解压命令:
bash
tar -xzvf filename.tar.gz # 解压.tar.gz
gzip -d filename.gz # 解压.gz
五、知识框架体系
📊 进程管理框架
text
进程管理
├── ps(静态快照)
│ ├── ps aux → 所有用户所有进程
│ ├── ps -ef → 完整格式所有进程
│ └── ps aux | grep xxx → 查找特定进程
├── top(实时监控)
│ ├── 启动参数:-d -p -u -b -n
│ └── 交互快捷键:P M 1 E c k q
└── kill(终止进程)
├── kill PID → 正常终止(SIGTERM)
└── kill -9 PID → 强制终止(SIGKILL)⚠️
💾 磁盘管理框架
text
磁盘管理
├── mount(挂载)
│ └── mount -t 类型 -o 选项 设备 挂载点
├── umount(卸载)
│ └── umount 挂载点或设备
├── df(磁盘空间)
│ └── df -h(易读格式)
└── du(目录大小)
├── du -sh 目录(总大小)
└── du -h --max-depth=1(各子目录大小)
📝 数据处理框架
text
数据处理
├── sort(排序)
│ ├── -n 数值排序 ⭐
│ ├── -r 降序
│ ├── -k N 按第N列
│ ├── -t 分隔符
│ └── -u 去重
└── grep(搜索)
├── -i 忽略大小写
├── -v 反向匹配
├── -n 显示行号
├── -c 统计行数
├── -E 扩展正则
└── 正则:^ $ . * | []
📦 压缩归档框架
text
压缩归档
├── gzip(单文件压缩)
│ ├── gzip 文件 → 压缩
│ └── gzip -d 文件.gz → 解压
└── tar(归档打包)
├── -c 创建
├── -x 解压
├── -v 详细过程
├── -f 指定文件
└── -z gzip压缩/解压
六、综合实战
实战1:查找并终止占用CPU过高的进程
bash
用top找到PID,或直接用ps查找
ps aux --sort=-%cpu | head -5
终止进程(替换PID)
kill -9 PID
实战2:查找大文件并清理
bash
查看磁盘使用情况
df -h
查找/home下的大目录
du -sh /home/* | sort -nr | head -5
实战3:从日志中提取错误并统计
bash
统计ERROR出现次数
grep -c “ERROR” /var/log/syslog
提取ERROR并按时间排序
grep “ERROR” /var/log/syslog | sort
七、截图清单