在雨云云服务器上跑业务,备份、看资源、查日志这些活儿几乎天天有。手写命令费时间,忙起来还容易漏。把流程固化成 Shell 脚本,再交给 crontab 定时跑,运维压力小一大半。下面几个脚本都能直接抄去用。
一、脚本放在哪、怎么管
建议统一放 /opt/scripts/,脚本加可执行权限 chmod +x,日志统一写到 /var/log/ops/。每个脚本开头写清楚用途和参数,方便半年后自己看。版本管理可以用 git 推一份到私有仓库。
二、自动备份:数据库 + 网站目录
最该自动化的就是备份。下面是一个组合脚本:
#!/bin/bash
DATE=$(date +%F)
BACKUP_DIR=/backup/$DATE
mkdir -p $BACKUP_DIR
# 数据库
mysqldump -u root -p"$DB_PASS" --all-databases | gzip > $BACKUP_DIR/db.sql.gz
# 网站目录
tar czf $BACKUP_DIR/www.tar.gz /var/www/html
# 保留 7 天
find /backup -type d -mtime +7 -exec rm -rf {} ;关键点:密码不要明文写死在脚本里,用环境变量或 ~/.my.cnf 读;保留天数按磁盘算,别无限堆。
三、资源监控:CPU/内存/磁盘超阈值告警
CPU=$(top -bn1 | grep "Cpu(s)" | awk '{print 100-$8}')
MEM=$(free | awk '/Mem/{printf "%.0f", $3/$2*100}')
DISK=$(df / | awk 'NR==2{print $5}' | tr -d '%')
if [ "$CPU" -gt 90 ] || [ "$MEM" -gt 90 ] || [ "$DISK" -gt 85 ]; then
echo "告警 机器$(hostname) CPU:$CPU% MEM:$MEM% DISK:$DISK%" | mail -s "雨云服务器告警" admin@example.com
fi阈值按业务调。邮件告警需要服务器装好 mailutils 且能发信,也可以用 curl 推到企业微信/钉钉机器人,更及时。
四、日志巡检:错误关键字抓取
grep -iE "error|timeout|exception" /var/log/nginx/error.log | tail -50 > /var/log/ops/err_$(date +%F).txt
if [ -s /var/log/ops/err_$(date +%F).txt ]; then
cat /var/log/ops/err_$(date +%F).txt | mail -s "今日错误日志" admin@example.com
fi每天把 Nginx/PHP 的错误日志里关键字抓出来汇总,不用自己翻。
五、用 crontab 定时执行
编辑 crontab -e:
0 3 * * * /opt/scripts/backup.sh >> /var/log/ops/backup.log 2>&1 */5 * * * * /opt/scripts/monitor.sh >> /var/log/ops/monitor.log 2>&1 0 1 * * * /opt/scripts/logcheck.sh >> /var/log/ops/logcheck.log 2>&1
备份每天凌晨 3 点,监控每 5 分钟一次,日志巡检每天 1 点。日志重定向别漏,否则出问题没地方查。
六、雨云上的注意事项
雨云云服务器新购用优惠码 admin01 走专属入口 https://www.jiyueip.com/link/5617 能拿五折,多开几台做主备时成本可控。备份别只存在本机——本机盘坏了全完,建议同步到雨云对象存储(见本站 OSS 实战篇)或者另一台内网机器。同节点内网传备份免费,跨公网才计费。
七、脚本健壮性几个习惯
- 开头加
set -euo pipefail,命令失败就停,避免连环错; - 路径用绝对路径,cron 环境没有你的 PATH;
- 锁文件防止脚本重叠跑(
flock); - 重要操作前先 dry-run 或打日志,别一上来就 rm -rf。
常见问题
关于在雨云服务器上写运维脚本的高频疑问,下面一并解答。






