总结一些Linux中复杂且功能强大的组合命令,这些命令通过管道和工具组合实现高效操作:

1. 系统监控与进程管理

查找并杀死占用大量内存的进程

bash

ps aux --sort=-%mem | head -n 10 | awk '{print $2}' | xargs kill -9

监控最耗CPU的进程

bash

watch -n 1 'ps aux --sort=-%cpu | head -10'

查找僵尸进程并杀死其父进程

bash

ps aux | awk '{if ($8=="Z") print $2}' | xargs ps -o ppid= -p | xargs kill

2. 文件与目录操作

查找并删除7天前的日志文件

bash

find /var/log -type f -name "*.log" -mtime +7 -exec rm {} \;

批量重命名文件(添加前缀)

bash

ls *.txt | awk '{print("mv "$1" prefix_"$1)}' | sh

查找大文件并排序

bash

find / -type f -size +100M -exec ls -lh {} \; 2>/dev/null | sort -hr -k5

3. 网络与安全

实时监控网络连接

bash

watch -n 1 'netstat -an | grep ESTABLISHED | awk '\''{print $5}'\'' | cut -d: -f1 | sort | uniq -c | sort -rn'

检查失败的SSH登录尝试

bash

grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -rn

4. 数据处理与分析

统计日志中IP访问频率

bash

awk '{print $1}' access.log | sort | uniq -c | sort -rn | head -20

实时监控日志变化并提取关键信息

bash

tail -f /var/log/syslog | grep --line-buffered "ERROR\|CRITICAL" | awk '{print strftime("%Y-%m-%d %H:%M:%S"), $0}'

5. 系统诊断与优化

检查磁盘使用率并告警

bash

df -h | awk '{if ($5+0 > 80) print "警告: "$6" 使用率 "$5}'

查看占用内存最多的10个进程

bash

ps aux | sort -rn -k4 | head -10

6. 高级搜索与替换

递归搜索并替换文件内容

bash

grep -rl "old_text" /path/to/dir | xargs sed -i 's/old_text/new_text/g'

多条件文件查找

bash

find . -type f \( -name "*.sh" -o -name "*.bash" \) -exec grep -l "pattern" {} \;

7. 备份与同步

增量备份并保留时间戳

bash

rsync -avz --delete --backup --backup-dir=/backup/$(date +%Y%m%d) /source/ /destination/

8. 性能分析组合

监控系统负载、内存、磁盘和网络

bash

watch -n 1 'echo "=== $(date) ==="; echo "Load:"; uptime; echo -e "\nMemory:"; free -h; echo -e "\nDisk:"; df -h /; echo -e "\nTop processes:"; ps aux --sort=-%cpu | head -5'

学习建议:

  1. 理解每个组件的功能:先掌握单个命令(find, awk, sed, grep, xargs等)

  2. 逐步构建:从简单组合开始,逐步增加复杂度

  3. 使用man命令:了解每个命令的选项和参数

  4. 测试安全:危险的命令(如rm)先换成echo或ls测试

  5. 创建别名:将常用复杂命令设为别名

实用技巧:

  • 使用time命令测试命令执行时间

  • 复杂命令可以先保存为脚本

  • 使用set -x调试脚本执行过程

  • 善用反引号``和$()进行命令替换

这些组合命令展示了Linux管道和工具的强大之处,通过组合简单的工具可以解决复杂的问题。掌握这些需要时间和实践,建议在测试环境中多练习。