2024-09-30 16:27:23 发布
网友
我已经成功地运行了crontab,但是当我引入python脚本时,什么也没有发生。我已经验证了我的python文件在直接从shell运行时可以工作
crontab是:
* * * * * /Users/myname/myzsh.zsh
其中myzsh.zsh是:
#!/bin/zsh /Users/mypath_to/python /Users/myname/testscript.py
什么也没发生
原来cron本身没有权限。我把它拖到了preferences的安全部分,瞧
这是一个非常常见的cron问题
cron
交互式运行和cron运行的环境不同。 这会导致观察到的故障
我假设您向我们展示了crontab -l作为同一个用户运行 以交互方式运行脚本, 因此,例如,我们与在cron下运行它的root没有差异
crontab -l
root
您的$PWD当前的工作目录可能很重要。 许多cron作业将执行以下操作:
$PWD
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.
... 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下的失败相同
$PATH
env | sort >> /tmp/log.txt
你会发现埋葬cd dir和export PATH=...很方便 在myzsh.zsh脚本中
cd dir
export PATH=...
考虑运行^ {< CD9>}以帮助调试{{< CD10}}详细信息。
您的脚本可能出现致命错误,退出状态为非零。 作为调试的辅助工具,考虑添加
MAILTO=prolle@some.email.provider.com
然后cron守护进程将向您发送脚本的输出, 如果它在stdout+stderr上生成的行数超过零
原来cron本身没有权限。我把它拖到了preferences的安全部分,瞧
这是一个非常常见的
cron
问题交互式运行和cron运行的环境不同。 这会导致观察到的故障
我假设您向我们展示了
crontab -l
作为同一个用户运行 以交互方式运行脚本, 因此,例如,我们与在cron下运行它的root
没有差异您的
$PWD
当前的工作目录可能很重要。 许多cron作业将执行以下操作:引用第5章crontab手册页:
您真的希望在执行脚本之前美化环境
至少我想你需要
许多my脚本建立了一个conda环境 在调用cPython之前, 所以
$PATH
是好的。 只运行env | sort >> /tmp/log.txt
的cron作业 查看默认情况下的路径。 尝试以交互方式使用该路径设置,然后 您可能会注意到脚本的失败与在cron下的失败相同你会发现埋葬
cd dir
和export PATH=...
很方便 在myzsh.zsh脚本中考虑运行^ {< CD9>}以帮助调试{{< CD10}}详细信息。
您的脚本可能出现致命错误,退出状态为非零。 作为调试的辅助工具,考虑添加
然后
cron
守护进程将向您发送脚本的输出, 如果它在stdout+stderr上生成的行数超过零相关问题 更多 >
编程相关推荐