Linux组合命令
# 第一类:文件与目录管理
# find + xargs rm:批量删老文件,防磁盘爆
find /var/log -name "*.log" -mtime +30 -print0 | xargs -0 rm -f1解释:find找30天前的日志,-print0用null分隔防空格名,xargs传给rm删除。
示例:在
/var/log下敲,输出无(安静删),但先去掉rm用ls预览:/var/log/oldapp.2024-01.log等文件列出。场景:服务器磁盘99%满,日志狂长,用这个瘦身,瞬间空出10G。
我的坑:第一次忘-mtime,差点删光所有log。绝招:加
-exec echo {} \;先模拟删,确认再真刀。Tips:CentOS用sudo,权限不够哭晕。
# ls -la + grep + sort:文件权限大排查
ls -la /etc | grep "^d" | sort -k91解释:ls列详尽权限,grep滤目录(^d),sort按第九列(大小)排。
示例:输出如
drwxr-xr-x 2 root root 4096 Sep 10 14:30 passwd,排序后大目录在前。场景:安全审计,查/etc下可疑大文件夹,防黑客藏木马。
故事:一次入侵事件,用这个发现/root下怪目录,及时隔离。绝招:加
head -10只看前10大,效率拉满。Tips:Ubuntu权限严,换ls -lah人性化大小。
# du -sh * + sort -hr:目录占用Top榜
du -sh /home/* | sort -hr | head -101解释:du统计子目录大小(-sh人类读),sort降序(-hr),head前10。
示例:
100G /home/user1、50G /home/user2,直观Top用户。场景:用户投诉空间不够,快速定位谁在囤视频。
我的教训:扫描根目录卡死半小时。绝招:指定路径如/var/www,专注Web目录。Tips:大盘用
--max-depth=1限深。
# tar -czf + find:智能备份指定文件
find /etc -name "*.conf" -type f | tar -czf config_backup.tar.gz -T -1解释:find列配置,-T -从stdin读,tar打包gzip。
示例:打包后
ls -lh见config_backup.tar.gz 2.5M,解压tar -xzf验证。场景:迁移前备份关键conf,防改动丢。
故事:云迁移,用这个打包Nginx/Apache conf,救回一堆配置。绝招:加
--exclude=*.bak跳过备份文件。Tips:远程传scp到备份机。
# grep -r + wc -l:全局搜索计数
grep -r "error" /var/log/app/ | wc -l1解释:grep递归搜error,wc计数行。
示例:输出
150,表示150处错误。场景:App崩溃,快速估严重度。
坑:大目录慢,用
--include="*.log"限文件型。绝招:加cut -d: -f1 | sort -u列独特文件。Tips:vim党用grep -n带行号。小Tips:文件组合练熟,运维从小时级变分钟。每天
du一次,防爆盘。
# 第二类:进程与资源监控
# ps aux + grep + awk:Top CPU进程猎手
ps aux | grep [n]ginx | awk '{print $2, $3, $11}' | sort -nrk2 | head -51解释:ps列进程,grep滤nginx,awk取PID(%CPU,命令),sort降序CPU,head前5。
示例:
1234 45.2 nginx: worker、5678 30.1 nginx: master。场景:负载飙升,查哪个worker吃CPU。
故事:电商峰值,用这个杀掉内存泄漏进程,稳住双11。绝招:加
top -p $(ps aux | grep nginx | awk '{print $2}' | head -1)深挖。Tips:Fedora用pgrep简化grep。
# top -b -n1 + sort:批处理资源Top
top -b -n1 | grep "Cpu(s)" -A 20 | sort -k9 -nr | head -101解释:top批次跑一次(-b -n1),grep CPU后20行(进程),sort按%MEM降序。
示例:内存Top如
java 2.5g 80%。场景:脚本监控,定时邮件Top进程。
我的习惯:crontab每5分跑,预警高耗。坑:-A太多行,改-A 15。绝招:用
htop交互版,手动sort。Tips:RHEL需yum装htop。
# free -h + awk:内存水位线
free -h | awk 'NR==2{printf "Used: %s/%s (%.1f%%)\n", $3,$2,$3*100/$2 }'1解释:free人类读,awk取第二行计算使用率。
示例:
Used: 7.8G/16G (48.8%)。场景:OOM杀进程前,快速查内存剩多少。
教训:swap满才知,用这个脚本警报。绝招:加
watch -n1实时看。Tips:Debian free -m单位M。
# lsof + grep:端口占用侦探
lsof -i :80 | grep LISTEN | awk '{print $2, $9}'1解释:lsof列端口,grep滤监听,awk取PID和命令。
示例:
1234 nginx: master。场景:Nginx起不来,查谁占80端口。
故事:迁移时冲突,用这个杀掉旧进程。绝招:
kill -9 PID一键终结。Tips:无lsof用netstat -tulpn。小Tips:进程监控是预防针,crontab这些组合,服务器睡得香。
# 第三类:网络诊断与配置
# ping + mtr:路由追踪神器
ping -c 10 8.8.8.8 & mtr -r -c 10 8.8.8.81解释:ping发10包测延迟,mtr报告路由跳数+丢包(-r报告 -c10次)。
示例:mtr输出
Hop 1: 192.168.1.1 1ms 0% loss、Hop 5: 114.114.114.114 20ms 5% loss。场景:远程访问卡,定位哪跳丢包。
坑:防火墙挡mtr,用ping先探。绝招:
mtr --report-wide宽表看。Tips:Ubuntu apt install mtr。
# netstat -an + grep + wc:连接计数
netstat -an | grep :443 | wc -l1解释:netstat列连接(-an),grep HTTPS端口,wc计数。
示例:
5000,表示5000个443连接。场景:DDoS疑似,查高并发端口。
故事:峰值时用,及时限流iptables。绝招:加
awk '{print $5}' | sort | uniq -c | sort -nr看IP Top。Tips:ss命令更快ss -an | grep :443。
# ifconfig + grep + awk:IP速查
ifconfig eth0 | grep "inet " | awk '{print $2}'1解释:ifconfig接口,grep inet行,awk取IP。
示例:
192.168.1.100。场景:脚本配置,动态取本机IP。
我的日常:Docker桥接,用这个调试。坑:ip addr show现代版。绝招:
hostname -I全IP。Tips:CentOS7弃ifconfig,用ip。
# tcpdump + grep:包捕获滤镜
tcpdump -i eth0 -n port 80 -c 100 | grep "GET /"1解释:tcpdump捕100包80端口(-c100),grep HTTP GET。
示例:
IP 192.168.1.10.12345 > 192.168.1.1.80: GET /index.html。场景:Web异常,抓包看请求。
教训:忘-c,全抓卡死。绝招:
tcpdump -w capture.pcap存文件wireshark析。Tips:sudo跑,权限要。
# 第四类:日志分析与调试
# tail -f + grep:实时错误追踪
tail -f /var/log/syslog | grep --line-buffered ERROR1解释:tail实时跟(-f),grep滤ERROR(--line-buffered缓冲)。
示例:实时刷
Sep 18 10:30: kernel ERROR: out of memory。场景:服务重启后,盯crash日志。
故事:数据库死锁,用这个捕获栈迹。绝招:多grep
| grep -v INFO排杂。Tips:journalctl systemd版。
# awk + sort + uniq:日志Top事件
awk '{print $5}' /var/log/auth.log | sort | uniq -c | sort -nr | head -51解释:awk取第五列(命令),sort uniq计数,降序Top5。
示例:
1000 sudo、500 ssh。场景:安全日志,查高频登录尝试。
坑:列错,改$NF末列。绝招:加
tail -10000限近期。Tips:Debian auth.log路径。
# sed + grep:日志清洗替换
grep "2025-09" /var/log/app.log | sed 's/IP=//g' | grep "blocked"1解释:grep日期,sed删IP=前缀,再grep blocked。
示例:清洗后
192.168.1.100 blocked变blocked。场景:报告生成,脱敏IP。
我的习惯:ELK前预处理。绝招:
sed -i原地改。Tips:正则sed 's/[0-9]\{3\}\.[0-9]\{3\}/XXX/g'模糊IP。
# zcat + grep:压缩日志搜
zcat /var/log/oldlogs/*.gz | grep "panic" | wc -l1解释:zcat解压不存,grep panic,wc计数。
示例:
25,旧log中25次panic。场景:历史故障溯源。
教训:gz多,内存爆,用
zgrep直接搜。绝招:zcat | head -100限量。Tips:bz2用bzcat。小Tips:日志组合是事后诸葛,配置rsyslog远程,统一管。
# 第五类:系统维护与安全
# yum update -y + grep:安全补丁速更
yum check-update | grep security | xargs yum update -y1解释:yum查更新,grep security包,xargs更新。
示例:更新
kernel-security 5.14.0-1。场景:月巡检,防漏洞。
故事:WannaCry时,用这个救服务器。绝招:
yum history查变更。Tips:Ubuntu apt list --upgradable | grep security。
# chmod + find:权限批量修
find /var/www -type f -exec chmod 644 {} \; ; find /var/www -type d -exec chmod 755 {} \;1解释:find文件644,目录755。
示例:无输出,但
ls -la见权限变。场景:Web目录松散,安全加固。
坑:递归深,慢;加-name "*.php"
限。绝招:先find ... -ls`预览。Tips:SELinux用chcon。
# history + grep + awk:命令审计
history | grep rm | awk '{print $1, $2}' | sort -u1解释:history列命令,grep rm,awk取序号和命令,uniq去重。
示例:
500 rm -rf /tmp/*。场景:查谁删文件,责任追踪。
我的绝活:.bash_history备份,远程审计。绝招:
lastcomm系统命令史。Tips:export HISTSIZE=10000多存。