Cron 没有运行我的 Python 语句

Cron 没有运行我的 Python 语句

我在 crontab 中有以下条目:

* * * * * python -c "import datetime; datetime.datetime.now()" >> /home/myname/pythoncron1.log

pythoncron1.log 文件正在创建,但其中没有任何内容,并且自创建文件以来文件修改日期尚未更新。我期望在文件中看到很多行,每运行一分钟 cron 作业就会显示一行。

这为什么可能不起作用?

(您可能已经猜到了,我正在尝试做一些比上面的例子更复杂的事情,但我将问题缩小到 python 在被 cron 调用时显然无法运行)。

答案1

只是为了澄清一下,你的 python 脚本中是否有任何打印语句?

交互运行时你不需要它们:

Python 2.6.1 (r261:67515, Jul  7 2009, 23:51:51) 
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import datetime
>>> datetime.datetime.now()
datetime.datetime(2010, 2, 24, 19, 36, 21, 244853)

在命令行上执行以下操作:

example:~% python -c "import datetime; datetime.datetime.now()"      
example:~% python -c "import datetime; print datetime.datetime.now()"
2010-02-24 19:38:59.639324
example:~% 

答案2

您可能需要将整个 python 路径放在例如 /usr/bin/python 中

答案3

如果事实并非 Frenchie 所说的那样(很可能是那样),查看用户邮件可能会有所帮助。Cron 将 cron 作业的输出邮寄到该 crontab 的用户帐户。这就是为什么您经常看到 STDOUT 和 STDERR 被管道传输到 /dev/null,这样他们就不会收到他们不关心的输出。

您可以以该用户的身份使用 mail 命令来检查是否有有用的输出。此外,/var/log/cron 文件可能包含有用的信息。

答案4

python -c "import datetime; datetime.datetime.now()"不输出任何内容,因此没有任何内容可输出到文件。

确保您运行的命令确实在命令行上输出一些内容。

相关内容