Shell脚本是Linux运维核心工具,依托bash可实现服务器巡检、日志清理、文件备份、进程监控、批量操作等自动化工作。本文整理10个高频运维场景Shell案例,代码可直接部署使用,适配CentOS、Ubuntu主流Linux发行版,无第三方依赖,兼顾可读性与稳定性。
#!/bin/bash
echo "====服务器资源巡检报告===="
echo "主机名:$(hostname)"
echo "系统版本:$(cat /etc/redhat-release 2>/dev/null || lsb_release -a)"
echo "CPU负载:$(uptime | awk -F'load average:' '{print $2}')"
echo "内存使用:$(free -h)"
echo "磁盘挂载:$(df -h)"
echo "运行时长:$(uptime -p)"#!/bin/bash
LOG_PATH="/var/log/nginx"
# 删除7天前日志
find $LOG_PATH -name "*.log" -mtime +7 -delete
echo "已清理7天以上日志文件"#!/bin/bash
BACKUP_DIR="/data/mysql_backup"
DB_NAME="test_db"
TIME=$(date +%Y%m%d)
mysqldump -uroot -p123456 $DB_NAME > $BACKUP_DIR/${DB_NAME}_$TIME.sql#!/bin/bash
PROCESS="nginx"
if ! pgrep $PROCESS > /dev/null;then
systemctl start $PROCESS
echo "$PROCESS进程已异常重启"
fi#!/bin/bash
for ip in 192.168.1.{1..20};do
ping -c1 -W1 $ip > /dev/null
[ $? -eq 0 ] && echo "$ip 在线"
done#!/bin/bash
for file in *.txt;do
mv "$file" "${file%.txt}.md"
done#!/bin/bash
awk '{print $1}' access.log | sort | uniq -c | sort -nr#!/bin/bash
TIME=$(date +%Y%m%d)
tar -zcvf data_$TIME.tar.gz /home/data#!/bin/bash
WARN_THRESHOLD=85
df -h | grep -v tmpfs | awk 'NR>1{gsub(/%/,"",$5);if($5>'$WARN_THRESHOLD')print $1,$5"%磁盘占用过高"}'#!/bin/bash
HOSTS=("192.168.1.10" "192.168.1.11")
for host in ${HOSTS[@]};do
ssh root@$host "hostname;free -h"
donechmod +x demo.shcrontab -e 添加定时规则set -euo pipefail