检查Cron作业已经过了多长时间并发送电子邮件

有一个cron工作是在一天中的大部分时间运行,有时工作卡住,我想设置一个时间或检查它让我知道如果已经被卡住超过20分钟,我想得到我如何做到这一点的想法。 最后,如果真的花了20多分钟,我会很乐意给我们发电子邮件。 这是我的crontab项目:

00 07 * * * /u01/home/oracle/sysadm/run_trans_push.sh > /u01/home/oracle/trc/run_trans_push.sh_`date +\%b_\%d`.trc 2>&1 

这也创build一个跟踪文件。

您可以尝试以下操作:在作业开始之前创build一个文件,并在完成时将其删除。 作业开始后20分钟检查文件是否存在。 如果是的话发送通知

 00 07 * * * touch /tmp/run_trans_push.started;  /u01/home/oracle/sysadm/run_trans_push.sh> /u01/home/oracle/trc/run_trans_push.sh_`date + \%b _ \%d`.trc 2>&1;  rm -f /tmp/run_trans_push.started
 20 07 * * * if [-f /tmp/run_trans_push.started]; 然后回显“run_trans_push仍在运行”; 科幻

就像我知道的那样,cron发送邮件给cron作业的用户,如果有输出的话。 所以我觉得做一个echo就足够了。 但是,当然你可以发邮件,例如:

 mailx -s 'run_trans_push still running' oracle </dev/null