Crontab 不运行 Python 脚本

Crontab 不运行 Python 脚本

我遇到以下问题:我的“hello world”python脚本无法通过crontab运行。

如果我这样设置 crontab 指令:

* * * * * cd /home/ && /usr/bin/python /home/hello.py

文本没有出现在终端中。

但如果我这么做:

* * * * * cd /home/ && /usr/bin/python /home/hello.py >> /home/log.txt

Ubuntu 将“hello world”文本附加到log.txt

这是我的脚本:

#!/usr/bin/env python
print('Hello World!')

我究竟做错了什么?

PS 已经阅读过此主题为什么 crontab 脚本不起作用?

答案1

您的脚本由 Cron 执行,一切按预期运行。只是 Cron 并非设计用于将任何内容输出到终端。因此,在我看来,此处的正确问题应该是这样的:Cron 中的标准输出到哪里?

除非重定向 ( >, >>) 或通过管道 ( |) 发送到另一个程序,否则通常会输出到标准输出(如果您在命令行中执行命令),包括所有错误消息,都将发送到运行 Cronjob 的用户的本地邮箱。要发送/接收这些电子邮件,您应该应用最低配置,如下所述:如何设置 Cron 发送电子邮件?

大多数建议建议重复解释如何将 Cronjob 的输出重定向到 TTY 或终端窗口,但要在那里获取输出,您应该提前登录(在该 TTY 或终端窗口中)。以下是一些其他示例:


此外,在这种情况下:

  • cd /home/是不需要的,因为您的脚本没有在那里写任何内容,并且该脚本是通过其完整路径调用的。
  • /usr/bin/python不需要,因为你通过 shebang 告诉系统这是 Python 脚本#!/usr/bin/env python。但在这种情况下该文件应该具有可执行权限:chmod +x /home/hello.py

答案2

你可以尝试一下!

* * * * * cd /home/ && /usr/bin/python /home/hello.py >> /dev/tty3

(或者你的 tty,如果不是 tty3)

相关内容