Linux运维必备:10个高频命令实战技巧,从入门到效率飞跃

在日常的服务器运维工作中,掌握高效的命令行技巧可以大幅提升工作效率。本文整理了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 -yapt install mtr-tiny iftop -y

如果你有更多实用的运维技巧,欢迎在评论区分享!

© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享