是否有可以运行的命令来验证用户的 cron 作业是否已成功运行?
平台是 Ubuntu 8.04 LTS。
我在 /home/useraccount/bin/ 中有脚本
跑步
crontab -l
以用户身份登录时会导致:
# m h dom mon dow command
@hourly /home/useraccount/bin/script_1
@hourly /home/locateruser/bin/script_2
我知道脚本可以发送电子邮件或写入带有时间戳的日志,但想知道是否有一种方法可以验证它是否从命令行运行。
编辑:
我跑了
ps -ef|grep cron
...结果显示
root 4358 1 0 Mar12 ? 00:00:00 /usr/sbin/cron
不确定这是否表明它正在运行作业......
答案1
grep scriptname /var/log/syslog
答案2
/var/log/cron
你可以检查它是否当前正在运行:
ps aux
答案3
为了确保脚本成功完成,应该使用临时文件。在作业启动时创建它,在作业完成时删除它。这还可以捕获崩溃并避免在出现错误时再次运行相同的作业。
#!/bin/bash
# check if there is already a temp file with suffix .myscript in /tmp,
# if file exists return with status of 666
[ -f /tmp/*.bla ] && exit 666
# create a temp file with suffix .myscript
TEMP_FILE=`mktemp --suffix .myscript`
touch $TEMP_FILE
#
# script stuff
#
# we are done, clean-up after ourselves
rm $TEMP_FILE
答案4
我制作了一个工具,http://cronitor.io,因为我需要一个解决方案来监控一些 cron 作业,但对现有的选项不满意。监控单个作业是免费的,并且有针对商业用途的付费计划。
Cronitor 的优点在于,您只需给它一个 cron 表达式,如 */5 * * * MW,如果作业没有按计划启动、运行时间比预期的长或重叠,您就会收到警报。