首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在脚本未运行时得到通知

如何在脚本未运行时得到通知
EN

Stack Overflow用户
提问于 2010-10-12 01:39:46
回答 4查看 282关注 0票数 1

我有一个bash脚本,它运行在一台机器上(称为懒人),通常被关闭。每天晚上,懒鬼都会在BIOS中的已知时间醒来,进行大量的处理,并将数据插入Postgres数据库。然后,它进入睡眠(数据库和所有)。

当脚本没有运行时,如何得到通知?理想情况下,如果数据库中没有插入任何内容,或者脚本退出时返回值为非零,我希望收到电子邮件通知。我肯定需要检查这两种情况,以防懒鬼忽视他的闹钟,睡in..again。

我有另一台机器(监工),它总是在运行,但资源有限。一些想法:

  • 给监工发送了一些信息,表明他完成了自己的工作(也许是插入了一行数)。然后,监工每天都会在某个时候检查他的报告。如果没有,请发电子邮件给我,我会派暴徒去打懒人。
  • 让任务主管直接用WakeOnLan包唤醒懒人,等两分钟,通过ssh运行脚本,并检查数据库中当天的行数。如果有什么不对劲的话,给我发邮件。

哪种方法更好?有更简单的方法吗?你会使用哪种技术?我想也许是一些crontab,mailx,logger,或者rsyslog的混合。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-10-12 02:35:37

我更喜欢您的第一种更分散的方法(例如,lazy家伙将在一个简单的HTTP服务器上执行一些请求,在成功的任务完成后,服务器将更新存储在磁盘上的时间戳,该时间戳将由cron脚本检查),但是第二个方法有一个优点--当您决定更改懒人调度(以及检查调度)时,您将从一个单一的位置执行它--任务主程序。

票数 1
EN

Stack Overflow用户

发布于 2010-10-12 16:42:12

我感到惊讶的是,还没有人提到这一点:当从cron运行的脚本异常退出时,它会向/etc/crontab中指定的邮件地址发送电子邮件。它包括脚本的所有输出。

票数 1
EN

Stack Overflow用户

发布于 2010-10-12 02:24:50

如果懒鬼在做完所有的家务活后能把东西打印到文件里,那就太好了。

          • rm -rf /tmp/lazyguy.log;/lazyguy.sh > /tmp/lazyguy.log

然后让另一个脚本在另一个时间运行,以检查懒鬼是否已经完成、仍在运行或根本没有运行。

检查你的如果懒鬼,你可以做一些事情,如

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

希望这有帮助,如果您有其他问题,请添加您的评论。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3911129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档