《Bash Shell 系统管理命令全面总结 —— 基于“更多的 bash shell 命令”课程实践》

《Bash Shell 系统管理命令全面总结 —— 基于“更多的 bash shell 命令”课程实践》 一、进程管理 —— 系统的生命状态监控1.1 什么是进程在 Linux 系统中进程Process是运行在系统上的程序实例。Shell 本身也是一个进程我们执行的每条命令都会启动一个或多个进程。理解进程的状态和行为是系统管理的第一步。1.2 ps 命令 —— 静态快照ps 命令用于捕获某一时刻系统进程的快照信息。【基本用法】ps输出仅显示当前终端下的进程包含 PID进程ID、TTY终端、TIMECPU时间和CMD命令名。【常用参数组合】ps -ef 显示系统上所有进程的完整格式信息ps aux 以 BSD 风格显示所有进程的详细状态常用【ps -ef 输出的关键列】UID 启动进程的用户PID 进程IDPPID 父进程ID谁启动了该进程C CPU 利用率STIME 进程启动时间TTY 关联终端TIME 累计占用 CPU 时间CMD 启动命令【实操建议】在 Xshell 中执行 ps -ef | grep bash可以看到当前所有 bash 进程及其父进程关系。1.3 top 命令 —— 实时仪表盘如果说 ps 是拍照那么 top 就是直播。它实时刷新系统状态是排查性能问题的首选工具。【top 输出解读】第1行 当前时间、系统运行时长、登录用户数、1/5/15分钟平均负载第2行 进程总数、运行中/休眠/停止/僵化状态数量第3行 CPU 使用率用户态、系统态、空闲、等待等Mem行 物理内存总量、已用、空闲、缓存Swap行 交换分区总量、已用、空闲、缓存【常用交互操作在 top 界面中按键】u 查看指定用户的进程E 切换内存显示单位KB - MB - GBP 按 CPU 使用率排序M 按内存使用率排序q 退出【注意】若最近15分钟平均负载持续偏高说明系统可能存在资源瓶颈如 CPU 过载、内存不足或 I/O 等待。1.4 终止进程 —— kill 命令当进程无响应或资源耗尽时需要手动终止。【基本语法】kill [信号] PID【常用信号】TERM 15 默认信号请求进程正常终止KILL 9 强制终止慎用可能导致数据丢失HUP 1 重新加载配置【示例】kill -9 4469 强制结束 PID 为 4469 的进程【核心原则】优先使用 kill无参数实在无效才用 -9。强制结束可能损坏正在写入的文件。二、磁盘与存储管理 —— 让存储设备为我所用2.1 挂载mount与卸载umountLinux 将所有存储设备纳入统一的虚拟目录树。使用新设备U盘、外接硬盘前必须将其挂载到目录树上的某个节点。【查看已挂载设备】mount输出示例/dev/sdb1 on /mnt/usb type vfat (rw)【手动挂载设备】mount -t vfat /dev/sdb1 /mnt/usb-t 指定文件系统类型如 vfat、ext4、ntfs设备文件如 /dev/sdb1- 挂载点如 /mnt/usb【卸载设备】umount /mnt/usb或umount /dev/sdb1【注意】卸载前必须确保没有进程在使用该设备上的文件。若提示设备繁忙用 lsof 命令查看占用进程再停止相应服务。【lsof 典型用法】lsof /mnt/usb 查看哪些进程在访问该挂载点lsof -i :80 查看占用 80 端口的进程2.2 查看磁盘空间 —— dfdf 命令查看整个文件系统的磁盘使用情况。【常用参数】df -h 以人类易读格式GB/MB显示【输出列】文件系统、总容量、已用、可用、使用%、挂载点。2.3 查看目录大小 —— dudu 查看特定目录及其子目录的磁盘占用。【常用参数】-h 易读格式显示-s 只显示每个目录的总计不列出子文件-c 最后显示总计行【示例】du -sh /home 查看 /home 目录总大小du -h --max-depth1 查看当前目录下各子目录大小深度1三、数据处理 —— 排序与检索的艺术3.1 sort —— 数据排序sort 用于对文本内容进行排序显示不修改原文件。【基本用法】sort data.txt【关键参数】-n 按数值排序而非字符 示例sort -n score.txt-r 降序排列 示例sort -nr score.txt-t 指定字段分隔符 示例sort -t: -k3 /etc/passwd-k 按指定字段排序 示例sort -k2 data.csv-u 去重唯一输出 示例sort -u names.txt【重要区别】不加 -n 时sort 将数字视为字符串如 10 会排在 2 前面因为 1 2。处理数值时必须加 -n。【练习题实践】# 创建数字文件for i in 5 2 5 1 3; do echo $i nums.txt; done# 各类排序sort nums.txt 字符排序10在2前sort -n nums.txt 数值排序1,2,3...sort -nr nums.txt 降序sort -nu nums.txt 去重后升序3.2 grep —— 强大的文本搜索grep 在文件或输入中按模式匹配查找行是日志分析、数据过滤的利器。【基本语法】grep pattern filename【常用参数】-v 反向匹配输出不包含该模式的行 示例grep -v error log.txt-n 显示匹配行的行号 示例grep -n fail log.txt-c 只统计匹配行数 示例grep -c success log.txt-e 指定多个模式OR逻辑 示例grep -e error -e fail log.txt-i 忽略大小写 示例grep -i warning log.txt-r 递归搜索目录 示例grep -r TODO ./src/【正则表达式示例】grep ^[0-9] data.txt 以数字开头的行grep error$ log.txt 以 error 结尾的行grep ...[0-9] data.txt 使用正则匹配复杂模式【练习题实践】# 创建测试文件echo -e apple\nApple\nbanana\nAPPLE\norange fruits.txt# 各种grep实践grep apple fruits.txt 匹配 applegrep -i apple fruits.txt 不区分大小写匹配全部grep -v banana fruits.txt 排除 bananagrep -n apple fruits.txt 带行号grep -c apple fruits.txt 统计匹配行数grep -e apple -e orange fruits.txt 多模式匹配四、压缩与归档 —— 让数据瘦身与打包4.1 gzip —— 单文件压缩gzip 用于压缩单个文件生成 .gz 后缀的压缩包原文件被替换。【常用操作】gzip largefile.txt 压缩生成 largefile.txt.gzgzip -d largefile.txt.gz 解压等价于 gunzip4.2 tar —— 归档打包必掌握tarTape Archive是 Linux 最核心的归档工具常与压缩结合使用。【参数速查表】-c 创建归档文件-x 解归档提取-v 显示详细过程verbose-f 指定归档文件名必须紧跟文件名-z 通过 gzip 压缩/解压-j 通过 bzip2 压缩/解压-t 查看归档内容列表【典型应用场景】打包但不压缩 tar -cvf archive.tar /home/user/docs打包并压缩最常用 tar -czvf archive.tar.gz /home/user/docs解压 tar.gz 文件 tar -xzvf archive.tar.gz查看归档内容 tar -tvf archive.tar | more解压到指定目录 tar -xzvf archive.tar.gz -C /target/path【文件后缀规范】.tar 纯归档.tar.gz 归档gzip压缩也写作 .tgz.tar.bz2 归档bzip2压缩五、知识框架总览图思维导图结构Bash Shell 系统管理命令│├── ① 进程管理│ ├── ps静态快照│ │ ├── -ef全系统完整格式│ │ └── auxBSD风格│ ├── top实时监控│ │ ├── 负载均值1/5/15分钟│ │ ├── CPU/内存状态│ │ └── 交互操作u, E, P, M│ └── kill终止进程│ ├── TERM(15) —— 优雅终止│ └── KILL(9) —— 强制终止慎用│├── ② 磁盘与存储│ ├── mount / umount挂载/卸载│ ├── df -h全局磁盘空间│ ├── du -sh目录大小│ └── lsof查看文件占用进程│├── ③ 数据处理│ ├── sort排序│ │ ├── -n数值排序│ │ ├── -r降序│ │ ├── -t / -k按字段排序│ │ └── -u去重│ └── grep搜索│ ├── -v反向│ ├── -n行号│ ├── -c计数│ ├── -e多模式│ ├── -i忽略大小写│ └── 正则表达式支持│└── ④ 压缩与归档├── gzip / gunzip单文件压缩└── tar打包归档├── -cvf创建├── -xzvf解压 .tar.gz├── -czvf创建 .tar.gz└── -tvf查看内容六、实践心得与常见坑点总结6.1 需要特别注意的问题1. ps 与 top 的区别ps 是静态瞬间top 是动态实时。排查瞬时问题用 ps持续监控用 top。2. kill -9 的滥用风险强制结束可能导致文件损坏或数据丢失。先尝试 killTERM无效再用 -9。3. sort 的数字坑默认按字符排序10 排在 2 前面。处理数值时必须加 -n。4. grep 正则中的特殊字符如 . * [] 等需要转义或使用 -F固定字符串模式。5. 挂载设备前必须存在挂载点目录若目录不存在需先用 mkdir 创建。6. 卸载设备前务必检查占用用 lsof 或 fuser 确认无进程使用。6.2 日常实用组合技# 查找占用CPU最高的5个进程ps aux --sort-%cpu | head -6# 在日志中查找错误并统计行数grep -c ERROR /var/log/syslog# 查找大文件100M并排序find / -type f -size 100M -exec ls -lh {} \; | sort -k5 -hr# 打包并排除指定目录tar -czvf backup.tar.gz --excludelogs /home/project