Shell脚本是Linux运维自动化的基础工具,语法简单、无需编译,能快速完成文件处理、系统监控、批量运维等工作。本文整理10个行业高频经典Shell脚本,全部附带可直接运行的完整代码,适合新手练习与线上环境使用。
项目初始化时常需要批量生成有序目录,循环语句快速完成批量创建。
#!/bin/bash
for i in {1..10}
do
mkdir -p dir$i
done
echo "批量文件夹创建完毕"统一修改文件后缀,无需手动逐个改名,适合日志、文档批量规整。
#!/bin/bash
for file in *.txt
do
mv $file ${file%.txt}.bak
done
echo "文件后缀批量修改完成"自动计算内存占用比例,超过阈值输出警告,可配合定时任务巡检服务器资源。
#!/bin/bash
MEM=$(free | awk '/Mem/{printf "%.0f", $3/$2*100}')
echo "当前内存使用率:${MEM}%"
if [ $MEM -gt 80 ];then
echo "警告:内存资源占用过高"
fi定时删除多天前老旧日志,释放磁盘存储空间,避免日志堆积。
#!/bin/bash
find /var/log -name "*.log" -mtime +3 -delete
echo "3天前过期日志清理完成"批量ping扫描局域网主机,快速筛选在线设备,简化网络巡检工作。
#!/bin/bash
for i in {1..20}
do
ping -c 1 -W 1 192.168.1.$i >/dev/null 2>&1
[ $? -eq 0 ] && echo "192.168.1.$i 主机在线"
done统计当前目录所有shell文件代码量,用于项目代码规模统计。
#!/bin/bash
total=0
for file in *.sh
do
line=$(wc -l < $file)
total=$((total+line))
echo "$file 行数:$line"
done
echo "全部脚本总行数:$total"打包业务目录并添加时间标记,防止备份文件覆盖,保障数据可回溯。
#!/bin/bash
time=$(date +%Y%m%d_%H%M%S)
tar -zcf data_$time.tar.gz /home/data >/dev/null 2>&1
echo "备份完成,文件:data_$time.tar.gz"持续监测Nginx等核心服务,进程崩溃后自动重启,保障业务不间断运行。
#!/bin/bash
pid=$(pgrep nginx)
if [ -z "$pid" ];then
systemctl start nginx
echo "Nginx异常,已自动重启服务"
fi一键批量修改目录内文件指定字符,适用于批量更新配置文件。
#!/bin/bash
sed -i "s/old_text/new_text/g" *.txt
echo "文本内容批量替换成功"实时读取根分区磁盘占用,空间不足时输出预警,防止磁盘打满服务宕机。
#!/bin/bash
disk=$(df / | awk 'NR==2{print $5}' | cut -d% -f1)
echo "磁盘使用率:${disk}%"
if [ $disk -gt 90 ];then
echo "警告:磁盘空间即将耗尽,请及时清理"
fi这10个Shell脚本覆盖运维日常绝大多数自动化场景,代码简短易懂,上手门槛低。脚本可直接复制使用,也能根据业务场景调整参数,搭配crontab定时任务可实现服务器无人值守维护,大幅降低人工运维工作量。
海量精选技术文档和实战案例持续更新,敬请关注【风骏时光少年】