Cron作业在指定时间时无法运行

2 投票
2 回答
889 浏览
提问于 2025-04-17 22:05

我想用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”命令。

你有没有收到任何邮件回复?

撰写回答