在日常的服务器运维工作中,掌握高效的命令行技巧可以大幅提升工作效率。本文整理了10个Linux运维中最常用的命令实战技巧,涵盖文件查找、日志分析、系统监控、网络调试等核心场景,每个技巧都配有可直接运行的命令示例。
一、find 命令:高效文件查找
find 是Linux中最强大的文件查找工具,支持按名称、类型、大小、时间等多维度组合搜索。
1. 按名称模糊查找
# 在 /var/log 下查找所有 .log 文件
find /var/log -name "*.log" -type f
# 不区分大小写查找
find /home -iname "*.conf"
# 排除某个目录
find / -name "*.py" -not -path "*/venv/*" -not -path "*/__pycache__/*"
2. 按时间查找
# 查找最近7天修改过的文件
find /var/www -mtime -7 -type f
# 查找超过30天未访问的日志文件(适合清理)
find /var/log -atime +30 -name "*.log" -type f
# 查找最近1小时内修改的文件
find /tmp -mmin -60 -type f
3. 查找后执行操作
# 批量删除 .tmp 文件
find /tmp -name "*.tmp" -type f -delete
# 批量修改文件权限(将 .sh 文件设为可执行)
find /opt/scripts -name "*.sh" -type f -exec chmod +x {} \;
# 查找大文件并显示详情
find / -type f -size +100M -exec ls -lh {} \; 2>/dev/null
二、grep + awk + sed:文本处理三剑客
这三个命令是日志分析和文本处理的核心工具,熟练组合使用可以解决绝大多数文本处理需求。
4. grep 实战
# 搜索 Nginx 访问日志中的 404 错误并统计
grep " 404 " /var/log/nginx/access.log | wc -l
# 搜索包含关键词的行,显示行号和上下文
grep -n -C 3 "ERROR" /var/log/app.log
# 递归搜索目录中所有文件内容
grep -rn "TODO" /opt/project/src/ --include="*.py"
# 使用正则表达式过滤 IP 地址
grep -oE "([0-9]{1,3}\.){3}[0-9]{1,3}" /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20
# 排除注释行和空行
grep -vE "^#|^$" /etc/my.cnf
5. awk 实战
# 统计 Nginx 各状态码出现次数
awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -rn
# 提取 Nginx 日志中访问量前10的URL
awk '{print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -10
# 计算平均响应时间(假设最后字段为响应时间)
awk '{sum+=$NF; count++} END {print "平均响应时间:", sum/count, "ms"}' /var/log/nginx/access.log
# 过滤并格式化输出 CSV
awk -F',' 'NR>1 && $3 > 100 {printf "%s,%s,%s\n", $1, $2, $3}' data.csv
6. sed 实战
# 批量替换配置文件中的IP地址
sed -i 's/192.168.1.100/10.0.0.50/g' /etc/nginx/*.conf
# 删除文件中的空白行
sed -i '/^$/d' config.txt
# 在指定行后插入内容(在第10行后插入)
sed -i '10a\# Added by automation' /etc/my.cnf
# 提取文件指定行范围(第10到20行)
sed -n '10,20p' /var/log/syslog
# 将 Tab 替换为逗号(制表符转CSV)
sed 's/\t/,/g' data.tsv > data.csv
三、系统监控与资源分析
7. top/htop 与资源定位
# top 按内存排序
top -o %MEM
# 查看指定用户的进程
top -u www-data
# 使用 ps 查找占用CPU最多的进程
ps aux --sort=-%cpu | head -10
# 查看指定端口的进程
lsof -i :80
lsof -i :3306
# 查看所有TCP连接状态统计
ss -s
ss -tlnp # 查看监听端口
ss -tnp | grep ESTAB | wc -l # 统计已建立连接数
8. 磁盘与内存诊断
# 查看磁盘使用率(自动排人类可读格式)
df -h | grep -v tmpfs | grep -v devtmpfs
# 查找指定目录下最大的10个文件/目录
du -ah /var | sort -rh | head -10
# 查看指定目录总大小
du -sh /var/log /var/www /opt
# 实时内存监控(每2秒刷新)
watch -n 2 'free -h'
# 查看内存使用最多的进程
ps aux --sort=-%mem | head -10
# 查看inode使用情况(文件数过多也会导致磁盘问题)
df -i
四、网络调试与故障排查
9. 网络工具实战
# 测试端口连通性(比 telnet 更轻量)
curl -v telnet://192.168.1.1:3306 --connect-timeout 5
# 追踪路由路径
traceroute 8.8.8.8
mtr -r -c 10 8.8.8.8 # 更好的替代方案,带报告
# 查看DNS解析
dig example.com
dig example.com +short # 只显示IP
# 抓包分析HTTP请求(过滤指定域名)
tcpdump -i eth0 -A -s 0 'host example.com and port 80'
# 测试网速
curl -o /dev/null -w "DNS: %{time_namelookup}s\nConnect: %{time_connect}s\nTotal: %{time_total}s\n" https://example.com
# 查看网卡实时流量(需要 iftop 或 nload)
# iftop -i eth0
# nload
五、实用脚本与自动化技巧
10. 一键系统巡检脚本
下面这个脚本可以快速检查服务器的关键健康指标:
#!/bin/bash
# 系统巡检脚本 - system-health-check.sh
echo "===== 系统巡检报告 $(date '+%Y-%m-%d %H:%M:%S') ====="
echo ""
# 1. CPU负载
echo "[CPU负载]"
uptime | awk -F'load average:' '{print $2}'
echo ""
# 2. 内存使用
echo "[内存使用]"
free -h | awk 'NR==2{printf "总计: %s 已用: %s 可用: %s 使用率: %.1f%%\n", $2,$3,$7,$3/$2*100}'
echo ""
# 3. 磁盘使用(超过80%标红)
echo "[磁盘使用]"
df -h | awk 'NR>1 && !/^tmpfs/ && !/^devtmpfs/ {
usage=$5;
gsub(/%/,"",usage);
status = (usage > 80) ? " ⚠️ 警告" : " ✅ 正常";
printf " %-20s 总计:%-8s 已用:%-8s 使用率:%-5s%s\n", $6, $2, $3, $5, status
}'
echo ""
# 4. TCP连接统计
echo "[TCP连接]"
ss -s | head -2
echo ""
# 5. CPU占用Top5
echo "[CPU Top5进程]"
ps aux --sort=-%cpu | head -6 | awk 'NR==1{printf " %-10s %-8s %-6s %s\n",$1,$2,$3,$11} NR>1{printf " %-10s %-8s %-6s %s\n",$1,$2,$3,$11}'
echo ""
# 6. 运行时间
echo "[系统运行时间]"
uptime -p
echo ""
echo "===== 巡检完毕 ====="
使用方式:
# 保存并执行
chmod +x system-health-check.sh
./system-health-check.sh
# 也可以加入 crontab,每天早上8点巡检并发送报告
# crontab -e
# 0 8 * * * /opt/scripts/system-health-check.sh > /var/log/health-report.log 2>&1
总结
以上10个技巧覆盖了Linux运维中最常见的场景:文件查找(find)、文本处理(grep/awk/sed)、系统监控(top/ss/df)、网络调试(curl/tcpdump/dig)和自动化脚本。建议将这些命令整理成自己的速查手册,在实际工作中反复练习,逐渐形成肌肉记忆。
💡 小贴士:所有示例命令均在 CentOS 7+ 和 Ubuntu 20.04+ 上验证通过。部分工具(如 mtr、iftop)需要额外安装:
yum install mtr iftop -y或apt install mtr-tiny iftop -y。
如果你有更多实用的运维技巧,欢迎在评论区分享!
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END








