简短版本:是否有一个现成的程序可以避免在频繁的 cron 作业失败时被反复 ping?我有一个自定义实现,但似乎有人已经处理过。
我的家庭服务器上有一个脚本,用于从 ISP 服务器获取邮件并存储在本地。 Comcast 经常会宕机一个小时左右,而且我从 cron 收到数十条消息(每两分钟一条),报告 fetchmail 失败。我设置了一个脚本来读取 cron 作业的输出(成功时为空白),并始终将其放入日志文件中,但仅将其放入标准输出中 - 因此,如果已经至少 20 分钟,则将其放入我的电子邮件中自上次错误发生以来。
我不可能是唯一遇到此问题的系统管理员。简而言之,该作业经常运行,我只想在它失败时定期更新,而不是持续不断的错误流。有没有我错过的现成解决方案?
脚本如下;正如您所看到的,它非常基本,例如,错误停止时没有指示:
#!/bin/bash
logpath=/var/log/$1.log
minutes=$2
latestlogpath=${logpath}.latest
cat >> "${latestlogpath}"
([ ! -e "${logpath}" ] || [[ $(date +%s -r "${logpath}") -lt $(date +%s --date="${minutes} min ago") ]] ) && {
cat "${latestlogpath}"
cat "${latestlogpath}" >> "${logpath}"
rm "${latestlogpath}"
}