在尝试Python时,Crontab让人头疼

2024-09-30 16:27:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经成功地运行了crontab,但是当我引入python脚本时,什么也没有发生。我已经验证了我的python文件在直接从shell运行时可以工作

crontab是:

* * * * * /Users/myname/myzsh.zsh

其中myzsh.zsh是:

#!/bin/zsh
/Users/mypath_to/python /Users/myname/testscript.py

什么也没发生


Tags: 文件topy脚本binshelluserszsh
2条回答

原来cron本身没有权限。我把它拖到了preferences的安全部分,瞧

这是一个非常常见的cron问题

交互式运行和cron运行的环境不同。 这会导致观察到的故障

我假设您向我们展示了crontab -l作为同一个用户运行 以交互方式运行脚本, 因此,例如,我们与在cron下运行它的root没有差异

您的$PWD当前的工作目录可能很重要。 许多cron作业将执行以下操作:

cd some_dir && ./my_script.zsh

引用第5章crontab手册页:

... HOME, SHELL, and PATH may be overridden by settings in the crontab ...

... the environment handed to child processes is basically the one from /etc/rc.

真的希望在执行脚本之前美化环境

至少我想你需要

env PYTHONPATH=. /Users/myname/myzsh.zsh

许多my脚本建立了一个conda环境 在调用cPython之前, 所以$PATH是好的。 只运行env | sort >> /tmp/log.txt的cron作业 查看默认情况下的路径。 尝试以交互方式使用该路径设置,然后 您可能会注意到脚本的失败与在cron下的失败相同

你会发现埋葬cd direxport PATH=...很方便 在myzsh.zsh脚本中

考虑运行^ {< CD9>}以帮助调试{{< CD10}}详细信息。


您的脚本可能出现致命错误,退出状态为非零。 作为调试的辅助工具,考虑添加

MAILTO=prolle@some.email.provider.com

然后cron守护进程将向您发送脚本的输出, 如果它在stdout+stderr上生成的行数超过零

相关问题 更多 >