我有一个bash脚本,它运行在一台机器上(称为懒人),通常被关闭。每天晚上,懒鬼都会在BIOS中的已知时间醒来,进行大量的处理,并将数据插入Postgres数据库。然后,它进入睡眠(数据库和所有)。
当脚本没有运行时,如何得到通知?理想情况下,如果数据库中没有插入任何内容,或者脚本退出时返回值为非零,我希望收到电子邮件通知。我肯定需要检查这两种情况,以防懒鬼忽视他的闹钟,睡in..again。
我有另一台机器(监工),它总是在运行,但资源有限。一些想法:
哪种方法更好?有更简单的方法吗?你会使用哪种技术?我想也许是一些crontab,mailx,logger,或者rsyslog的混合。
发布于 2010-10-12 02:35:37
我更喜欢您的第一种更分散的方法(例如,lazy家伙将在一个简单的HTTP服务器上执行一些请求,在成功的任务完成后,服务器将更新存储在磁盘上的时间戳,该时间戳将由cron脚本检查),但是第二个方法有一个优点--当您决定更改懒人调度(以及检查调度)时,您将从一个单一的位置执行它--任务主程序。
发布于 2010-10-12 16:42:12
我感到惊讶的是,还没有人提到这一点:当从cron运行的脚本异常退出时,它会向/etc/crontab中指定的邮件地址发送电子邮件。它包括脚本的所有输出。
发布于 2010-10-12 02:24:50
如果懒鬼在做完所有的家务活后能把东西打印到文件里,那就太好了。
然后让另一个脚本在另一个时间运行,以检查懒鬼是否已经完成、仍在运行或根本没有运行。
检查你的如果懒鬼,你可以做一些事情,如
checkamdump(){
while ps ax | grep -v grep | grep "lazyguy.sh" > /dev/null
do
sleep $SLEEPTIMEOUT
done
}
此外,还可以通过将以下内容添加到脚本中来检查lazyguy.log
FILESIZE=stat -c %s /tmp/lazyguy.log
if [ $FILESIZE -gt 0 ]
then
mailx -s "Lazyguy is really lazy" alerts@main.com < /tmp/lazyguy.log
fi
希望这有帮助,如果您有其他问题,请添加您的评论。
https://stackoverflow.com/questions/3911129
复制相似问题