Cron作业在指定时间时无法运行
我想用crontab来设置一个定时运行的脚本。我希望它每天在23:59运行一个python脚本,这就是我用的设置:
59 23 * * * python /var/www/script.py
但是这个似乎不太管用。这个脚本单独运行的时候没问题,但在23:59的时候却没有被激活。
我还尝试了其他方法:
*/1 * * * * python /var/www/script.py
这个设置是让同一个脚本每分钟运行一次。这个可以正常工作,每分钟都会被调用,一切都很好。
为什么设置一个具体的时间不行,而每分钟运行一次却可以呢?
2 个回答
0
这些定时任务原本每小时都能正常运行,直到我给它们设定了一个具体的时间。
首先检查一下 cron
是否正常运行。
sudo service cron status
如果它失败了,你可能会看到类似这样的信息:
状态:失败 ... ... /usr/sbin/cron[17912]: (CRON) 死亡 (无法锁定 /var/run/crond.pid,其他进程可能是 XXXXX: 资源暂时不可用)
根据这个链接,你需要结束这个进程,然后再重新启动它。
结束进程的方法很简单,你可以运行:
sudo kill -9 $(cat /var/run/crond.pid)
然后再重新启动服务:
sudo service cron start
最后,检查一下它是否在运行:
sudo service cron status
想了解更多原因,可以看看这个链接
0
定时任务(cron job)是以触发它的用户身份运行的,通常会在这个用户的主目录下执行,除非你运行的脚本里面有切换目录的命令(cd)。你可以创建一个可执行的bash脚本,里面可以放一些打印信息的命令(echo),或者创建和删除文件的命令,同时也可以调用你的python脚本,看看有没有什么效果。你可以试试用“cat 'abcd'> dummy.txt”这个命令,以及在调用python脚本之前和之后再试一次。你可以查看一下是谁在运行这个“crontab -e”命令。
你有没有收到任何邮件回复?