用 AI 做运维自动化,我踩过的所有坑
去年我开始尝试用AI来写运维脚本、配置监控和触发自动化任务。
本以为能轻松省力,结果前半个月几乎每天都在修AI生成的错误代码。
今天把踩过的六个坑和补救方法总结出来,每一步都配有命令和宝塔面板的点击路径,希望能帮你少走弯路。
坑一:AI生成的Shell脚本权限位错误
第一个坑是让AI写一个每日备份数据库的脚本。AI给的脚本里 chmod 参数写成了 chmod 777 /backup/*,直接把备份目录下所有文件设成了最高权限,导致安全软件报警。正确的做法是只给脚本执行权限,数据文件用644。
补救方法:
- 修改脚本权限:
chmod 750 /home/backup.sh(属主读写执行,同组读执行,其他无权限) - 数据文件默认权限通过在脚本里加
umask 022控制 - 宝塔面板路径:进入【文件】→ 右键脚本文件 → 【权限】→ 设置750
坑二:AI建议的定时任务路径写错
AI写了一个crontab任务用来清理日志,但写成了 * * * * * /scripts/clean_log.sh,而实际脚本放在 /usr/local/scripts/ 下。任务跑了但根本找不到文件。
正确做法:
- 在crontab里使用绝对路径,例如:
0 3 * * * /usr/local/scripts/clean_log.sh > /dev/null 2>&1 - 可以先手动执行测试:
/usr/local/scripts/clean_log.sh - 查看cron日志判断是否执行:
grep clean_log /var/log/cron(大部分Linux发行版)
坑三:AI生成的Python脚本忽略虚拟环境依赖
为了让AI写一个自动重启挂掉服务的守护脚本,它直接用了 pip install requests 但没有激活虚拟环境,导致脚本在系统Python环境下运行安装,污染了全局包管理。
补救方法:
- 使用虚拟环境:
python3 -m venv /opt/monitor-env - 激活后安装依赖:
source /opt/monitor-env/bin/activate→pip install requests - 在crontab或systemd里使用绝对路径的Python解释器:
/opt/monitor-env/bin/python /opt/scripts/monitor.py
坑四:AI把kill命令写成了killall -9
AI为了让脚本杀掉所有Java进程,写了 killall -9 java。这个命令在有的系统上会误杀其他重要进程。更安全的方法是先用 pgrep -f java 查看,再用 kill -15 逐个终止。
安全替代方案:
- 逐级终止:
ps aux | grep java | grep -v grep | awk '{print $2}' | xargs kill -15,等几秒再kill -9 - 或者用
systemctl stop your-service优雅停止 - 宝塔面板【软件商店】→ 对应服务 → 【服务管理】→ 停止
坑五:AI推荐的监控阈值太宽泛
让AI写一个磁盘使用率监控脚本,它直接用了“如果使用率大于80%就报警”,但我的数据库盘经常在75%~85%波动,导致每天几百条告警。
优化方法:
- 先收集一周数据:
df -h | grep /data | awk '{print $5}' | cut -d% -f1手动记录峰值 - 设定阶梯阈值:90%以上发邮件,85%~90%只记日志,80%~85%不处理
- 脚本示例片段:
USAGE=$(df /data | tail -1 | awk '{print $5}' | cut -d% -f1)
if [ $USAGE -ge 90 ]; then
echo "Disk critical: $USAGE%" | mail -s "Alert" ops@example.com
elif [ $USAGE -ge 85 ]; then
logger "Disk warning: $USAGE%"
fi
坑六:AI没有考虑任务互斥与重入
用AI写了一个网页健康检查脚本并每分钟跑一次,健康检查本身需要5秒,但网络卡顿时可能拖到2分钟。结果多个脚本实例同时运行,把服务器CPU撑满。
解决方法:
- 使用flock文件锁简单互斥:
#!/bin/bash
flock -n /var/lock/healthcheck.lock -c '/opt/scripts/check.sh' || echo "Previous instance still running, skipping"
- 把任务加到crontab时设置
* * * * * /usr/bin/flock -n /tmp/health.lock /opt/scripts/check.sh - 也可以考虑在脚本开头用pid文件检查
高频问题解答
Q: 用AI生成的shell脚本怎么快速测试正确性?
A: 先在虚拟机或测试机用 bash -n script.sh 检查语法,再用 bash -x script.sh 回显每步执行,观察输出是否符合预期。
Q: 我用宝塔面板,怎么把AI写的任务加进去?
A: 宝塔面板【计划任务】→ 添加任务 → 选择Shell脚本 → 把AI代码粘贴进去 → 一定检查脚本里的路径是否为绝对路径,比如 /www/backup/db.sh。
避坑与建议
如果你刚开始用AI做运维自动化,建议先从简单的单步骤脚本(如备份、清理)开始,每段AI代码都手动跑一遍再上定时任务。
最关键的是永远不给AI生成的脚本直接赋予777权限,路径和变量名一定要本地验证。
遇到异常时优先回看本文的坑二和坑五部分,大多能对应上。
最后提醒:AI能大幅提升效率,但最终生产环境的监控、告警和定时任务,一定要经过至少一周的观察才能完全信任。
现在我已经把AI当助手,所有项目都加上了错误处理、锁机制和日志记录,后面出错的频率大大降低。
希望你能吸取我的经验,早日实现稳定又省力的运维自动化。