运维只会敲命令?
Linux 运维17 个
实战技巧速查
find · sed · 日志统计 · 磁盘监控 · 防火墙 · 抓包 · 脚本实战
📦 3 PARTS + CONCLUSION
👉 滑动
PART 01
文件查找与操作
find + xargs 实战
运维老司机的一句话
学会技巧不是为了炫技,而是为了少加班
这篇文章整理了 Linux 运维工作中最实用的 18 个技巧,涵盖文件查找、批量操作、sed 文本处理、磁盘监控、日志统计、防火墙配置、网络抓包等高频场景。每个技巧都附有可直接复制的命令和注解,建议收藏备用。
文件查找与操作
FILE & PROCESS · find + xargs 实战
find 是运维中使用频率最高的命令之一,配合 -exec、xargs 可以实现批量文件操作。本节涵盖查找移动、批量解压、定时清理、大文件迁移等场景。
TIP01查找当前目录下所有 .tar 文件并移动到指定目录
find . -name "*.tar" -exec mv {} ./backup/ \;
find -name 用于查找文件名,-exec 和 xargs 用来承接前序结果执行动作。find 还支持-mtime(修改时间)、-type(对象类型,f 代表文件、d 代表目录)、-size(指定大小)等参数。
TIP02批量解压当前目录下所有 .zip 文件到指定目录
for i in `find . -name "*.zip" -type f`; do
unzip -d $i /data/www/img/
done
for i in (command); do ... done 是 for 循环的常用格式,其中 i 为变量,可自行指定。
TIP 03查找 3 天前创建的 .log 文件并删除
find . -mtime +3 -name "*.log" | xargs rm -rf {} \;
TIP 04将大于 100k 的文件移动至 /tmp
find . -size +100k -exec mv {} /tmp \;
TIP05查找 30 天前大于 100M 的 log 文件并删除
find . -name "*.log" -mtime +30 -type f \
-size +100M | xargs rm -rf {} \;
find 命令核心套路
find + 条件过滤 + xargs/exec + 动作
文本处理与 sed
TEXT PROCESSING · 增删改替换全掌握
sed 是 Linux 下最强大的流文本编辑器,掌握它的行首行尾操作、匹配替换、路径替换等技巧,能大幅提升文本处理效率。
TIP 06sed 常用命令收集(以 test.txt 为例)
去掉行首的 . 字符:
sed -i 's/^.//g' test.txt
在行首添加一个 a 字符:
在行尾添加一个 a 字符:
在特定行后添加一个 c 字符(匹配 wuguangke 行):
sed '/wuguangke/ac' test.txt
在特定行前加入一个 c 字符:
sed '/wuguangke/ic' test.txt
找到包含 SELINUX 的行,将其中的enforcing 替换为 disabled:
sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config
sed 冒号方式替换路径(将 /tmp 改成 /tmp/abc/):
sed -i 's:/tmp:/tmp/abc/:g' test.txt
# 真正的打印最大最小值
sed 's/ / /g' a.txt | sort -nr | sed -n '1p;$p'
用 sed 替换空格,sort 降序排序,sed -n1p;$p同时打印第一行(最大值)和最后一行(最小值)。
TIP 09修改文本中以 jk 结尾的替换成 yz
sed -e 's/jk$/yz/g' b.txt
将 /usr/local 替换为 /tmp,冒号分隔符避免路径中的斜杠冲突:
sed 's:/usr/local:/tmp:g' test.txt
监控与安全脚本
MONITORING & SECURITY · 磁盘·日志·防火墙
本节聚焦运维中最核心的监控与安全场景:磁盘告警、日志统计、防火墙配置、网络抓包。每个技巧都是一段可直接使用的脚本。
if [ ! -d /data/backup/ ]; then
mkdir -p /data/backup/
else
echo "The Directory already exists, please exit"
fi
if…;then…else…fi 为条件语句,!叹号表示反义\u201c不存在\u201d,-d代表目录。
TIP 12监控磁盘根分区,超 90% 发邮件告警
第一步:打印根分区使用率数值(去掉百分号):
df -h | sed -n '/$/p' | awk '{print $5}' \
| awk -F "%" '{print $1}'
第二步:循环判断,大于 90% 则发送邮件报警:
while sleep 5m; do
for i in `df -h | sed -n '/$/p' | awk '{print $5}' \
| sed 's/%//g'`; do
if [ $i -ge 90 ]; then
echo "Disk space > 90%!" | mail -s "Warn" XXX@XXX.XX
fi
done
done
TIP13统计 Nginx 访问日志中访问量前 20 的 IP
cat access.log | awk '{print $1}' | sort \
| uniq -c | sort -nr | head -20
sort 排序、uniq 检查及删除重复行。取前 10 个只需将 head -20 改为 head -10。
多日志文件合并统计前 10:
cd /home/logs/nginx/default
sort -m -k 4 -o access.logok access.1 access.2 ...
cat access.logok | awk '{print $1}' | sort -n \
| uniq -c | sort -nr | head -10
TIP14使用 snmpd 抓取 v2 版本的 cacti 数据
snmpwalk -v2c -c public 192.168.0.241
# 抓取 56.7 通过 80 请求的数据包
tcpdump -nn host 192.168.56.7 and port 80
# 排除 0.22 的 80 端口
tcpdump -nn host 192.168.56.7 or ! host 192.168.0.22 \
and port 80
cat .bash_history | grep -v ^# | awk '{print $1}' \
| sort | uniq -c | sort -nr | head -20
也可以用 history 命令统计前 10 条:
history | awk '{print $2}' | sort | uniq -c \
| sort -k1,1nr | head -10
TIP17防火墙配置:只允许远程主机访问 80 端口
iptables -F
iptables -X
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp -j REJECT
或者使用state 模块:
iptables -A INPUT -m state --state NEW \
-m tcp -p tcp --dport 80 -j ACCEPT
运维脚本核心思路
先监控发现问题,再定位日志找原因,最后用脚本自动化解决
这篇整理了 Linux 运维中最实用的 17 个技巧,覆盖三大核心领域:
文件查找与操作
find + xargs + exec 组合,实现批量查找、移动、清理
文本处理与 sed
行首行尾增删、匹配替换、路径替换,一条命令搞定文本修改
监控与安全脚本
磁盘告警、日志统计、防火墙配置、网络抓包,自动化运维闭环
技巧的价值在于遇到实际问题时能快速调用。建议收藏本文,配合上一篇「40+ 命令速查手册」使用,覆盖日常运维 90% 的场景。
我是大乐学IT,每天分享IT知识,如果你觉得今天这篇有收获,欢迎点赞、在看、转发三连,我们下篇见。
既然看到这里了,如果觉得有用,随手点个赞、在看、转发三连吧。
THANKS FOR READING