我遇到以下问题:我的“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)