我还能如何排除此 cron 作业的故障?

How else can I troubleshoot this cron job?

我一直在努力(和搜索)获得这个 cron 作业/python 脚本 运行ning 一段时间了。但是,它显然不起作用。我不确定还有什么方法可以解决原因,我已经尝试了在其他 SO 问题中发现的几件事。

脚本路径:/home/phil/cron_jobs/octoStatus.py

我希望 cron 每分钟 运行。

Crontab.txt 文件:

*/1 * * * * python /home/phil/cron_jobs/octoStatus/octoStatus.py &> octolog.txt

octolog.txt 用于捕获 STDOUT 和 STDERR 信息。 "sudo tail /var/log/cron"

的输出
Jul  3 10:20:00 bsd /usr/sbin/cron[83876]: (root) CMD (/usr/libexec/atrun)
Jul  3 10:20:00 bsd /usr/sbin/cron[83877]: (phil) CMD (python /home/phil/cron_jobs/octoStatus/octoStatus.py &> octolog.txt)
Jul  3 10:21:00 bsd /usr/sbin/cron[83903]: (phil) CMD (python /home/phil/cron_jobs/octoStatus/octoStatus.py &> octolog.txt)
Jul  3 10:22:00 bsd /usr/sbin/cron[83934]: (phil) CMD (python /home/phil/cron_jobs/octoStatus/octoStatus.py &> octolog.txt)

似乎每分钟 运行ning 都符合要求。但是,脚本的预期结果没有出现。 octolog.txt 也未创建。当我手动 运行 cron-log 中显示的确切语句时,一切都按预期正常工作,并且创建了 octolog.txt 文件。

我运行在 FreeBSD 上安装了这个,我去查看 /var/log/syslog,但它不存在。我是 FreeBSD 的新手,但我不确定在这种情况下这意味着什么,但我想我会提到它。

我不确定还有什么其他信息会有帮助,因为我被卡住了。谢谢。菲尔

我建议您使用 append 模式直接从 python 脚本写入文件。

也只是猜测,但我认为你应该给出输出文件的绝对路径,如注释中所述,如 python home/phil/cron_jobs/octoStatus/octoStatus.py &> /home/phil/cron_jobs/octoStatus/octolog.txt

首先,每分钟 运行 你的脚本,你不需要 */1。默认情况下每分钟 Cron 运行s,所以:

* * * * * /path/to/command

接下来,您的重定向可能会被破坏。 bash 手册页在 "Redirecting Standard Output and Standard Error" 下列出了 &> 格式,所以我假设这就是您想要做的。但是FreeBSD的/bin/sh不是bash。所以:

* * * * * /path/to/command >/path/to/output.txt 2>&1

这会将 stdout 发送到您的文件,并将 stderr 复制到 stdout。

这将我们带到:

* * * * * python /home/phil/cron_jobs/octoStatus/octoStatus.py > octolog.txt 2>&1

另请注意,根据 man 5 crontab,您可以在您的 crontab 文件中设置一个 MAILTO 变量,它将 output/errors 从您的作业指向一个电子邮件地址。

请注意,cron 使用的 PATH 可能不包括 /usr/local/bin,其中安装了 python。如果您的 octoStatus.py 脚本包含 "shebang",那么您可以直接执行它。否则,您要么必须提供 python 二进制文件的完整路径,要么将 PATH 变量添加到您的 crontab(类似于我上面提到的 MAILTO)。在所有情况下,您都可以通过阅读 man 5 crontab.

获得有关格式的说明