检查 Cron 任务已用时并发送电子邮件

检查 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

这也会创建一个跟踪文件。

答案1

您可以尝试以下操作:在作业开始前创建一个文件,并在作业完成后将其删除。作业开始 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 * * * 如果 [ -f /tmp/run_trans_push.started ]; 然后 echo "run_trans_push 仍在运行"; fi

据我所知,如果有输出,cron 会向 cron 作业的用户发送一封邮件。所以我认为这样做echo就足够了。但当然你可以发送邮件,例如:

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

相关内容