总结一些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 kill2. 文件与目录操作
查找并删除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 -k53. 网络与安全
实时监控网络连接
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 -rn4. 数据处理与分析
统计日志中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 -106. 高级搜索与替换
递归搜索并替换文件内容
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'学习建议:
理解每个组件的功能:先掌握单个命令(find, awk, sed, grep, xargs等)
逐步构建:从简单组合开始,逐步增加复杂度
使用
man命令:了解每个命令的选项和参数测试安全:危险的命令(如rm)先换成echo或ls测试
创建别名:将常用复杂命令设为别名
实用技巧:
使用
time命令测试命令执行时间复杂命令可以先保存为脚本
使用
set -x调试脚本执行过程善用反引号``和
$()进行命令替换
这些组合命令展示了Linux管道和工具的强大之处,通过组合简单的工具可以解决复杂的问题。掌握这些需要时间和实践,建议在测试环境中多练习。
评论