我创建了一个 bash 脚本,用于在 AWS 上运行自动 EBS 备份。它是通过 cronjob 启动的:
0 2 * * * /bin/bash /root/backup_snapshots.sh > backup.log 2>&1
这工作得很好,但接下来我想做的是添加一个退出代码来判断脚本是否成功运行(这样我就可以配置 Nagios 检查它)。我要做的有几件事:
- 在 /var/log/backup/ 目录中创建 backup.log。
- 配置 logrotate 以每天轮换它,以使此检查更容易检测。
但我有一个问题是,是否可以让 cron 将退出代码写入我创建的 backup.log 文件中?或者我应该采用这种类型的实现:
使用脚本创建 crontab 条目,该脚本可以启动实际脚本并具有如下退出代码:
#!/bin/bash
/root/backup_snapshots.sh 2> /dev/null
if [ $? -eq 0 ]
then
echo "PASS"
else
echo "FAIL" >&2
fi
我想让这个尽可能简单,所以如果 cron 可以做到,那就太棒了!如果没有,下一个最好的办法是创建一个执行 backup_snapshots.sh 并通过 cron 运行的 bash 脚本吗?
答案1
#!/bin/bash
exec 1>/var/log/backup/backup_sbapshots.log 2>&1
if /root/backup_snapshots.sh
then
echo "PASS"
else
echo "FAIL"
fi
制作如图所示的 cron 脚本,将 cronjob 运行状态放入备份日志文件中。请注意,没有提及该$?
变量,因为该if
语句拥有它自己的变量。