我在 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()"
不输出任何内容,因此没有任何内容可输出到文件。
确保您运行的命令确实在命令行上输出一些内容。