为什么我的 cron.d 每分钟作业无法运行?

为什么我的 cron.d 每分钟作业无法运行?

我曾尝试过很多方法,试图让我的 Python 脚本每分钟执行一次。因此,我想将其简化为每分钟执行一次“可能有效的最简单的操作”(我正在运行 debian/testing)。

我创建了一个单行文件/etc/cron.d/perminute

* * * * * /bin/touch /home/me/ding_dong

它由 root 拥有,并且可执行(不确定这两者是否重要)。然后我做了:

sudo service cron reload

然后坐下来,开始ls -ltr在我的主目录中一次又一次地运行(/home/me)。但我的 ding_dong 文件从未出现过。我知道如果我执行sudo /bin/touch /home/me/ding_dong,它会立即显示出来。

显然这里忽略了一些愚蠢的东西。

答案1

/etc/cron.d/在或中添加 cron 配置时,/etc/crontab您必须添加应在哪个上下文中运行命令的用户名,在您的示例中

* * * * * root /bin/touch /home/me/ding_dong

我只有一个提示:您不必ls -ltr一次又一次地开始运行,只需使用watch -n 5 "ls -ltr",它将每 5 秒运行一次命令(或将 5 替换为您想要的任何其他值)。

答案2

要创建新cron作业,您应该crontab -e以要运行该作业的用户身份运行。然后在出现的编辑器窗口中添加相关行:

* * * * * /bin/touch /home/me/ding_dong

你这样做的方式需要不同的格式,而且无论如何都不是一个好主意。crontabs 的/etc/cron.d格式略有不同,它们需要用户名才能运行。例如:

* * * * * USERNAME /bin/touch /home/me/ding_dong

一个很好的技巧(由@VogonPoetLaureate 建议)是捕获 cron 作业的标准错误,这可以帮助调试它们。例如:

* * * * * /bin/touch /home/me/ding_dong 2>/tmp/error

相关内容