我已经成功地运行了一个crontab,但是当我引入python脚本时,什么都没有发生。我已经验证了我的python文件在直接从shell运行时工作。
crontab是:
* * * * * /Users/myname/myzsh.zsh其中myzsh.zsh是:
#!/bin/zsh
/Users/mypath_to/python /Users/myname/testscript.py什么都没发生
发布于 2021-09-08 18:59:48
原来cron本身没有权限。我拖着把它扔到了安全区的首选项和瞧!
发布于 2021-09-06 18:47:31
这是一个足够普遍的cron抓到你。
您的环境在交互式运行和cron运行之间是不同的。这将导致所观察到的故障。
我假设您向我们展示了crontab -l运行作为交互运行脚本的同一个用户,因此我们不存在与在cron下运行它的root不同的地方。
您的$PWD,现在的工作目录,可能很重要。许多官员的工作都会做这样的事情:
cd some_dir && ./my_script.zsh引用自第5章crontab手册页:
..。主、壳和路径可能被crontab中的设置覆盖. ..。传递给子进程的环境基本上是来自/etc/rc的环境。
在执行脚本之前,您确实希望对环境进行润色。
至少我怀疑你需要
env PYTHONPATH=. /Users/myname/myzsh.zsh我的许多脚本在调用cPython之前都设置了一个cPython环境,所以$PATH是很好的。运行简单env | sort >> /tmp/log.txt的cron作业,查看默认情况下的路径。尝试以交互方式使用路径设置,您可能会注意到脚本失败了,就像在cron下一样。
您可能会发现将cd dir和export PATH=...隐藏在myzsh.zsh脚本中是很方便的。
考虑运行python -m site以帮助调试sys.path详细信息。
您的脚本可能会出现致命错误,非零退出状态。作为调试的辅助工具,请考虑添加
MAILTO=prolle@some.email.provider.com然后,如果脚本在stdout + stderr上产生超过零行,cron守护进程将向您发送脚本的输出。
https://stackoverflow.com/questions/69078412
复制相似问题