首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试Python时Crontab头痛

问尝试Python时Crontab头痛
EN

Stack Overflow用户
提问于 2021-09-06 17:34:18
回答 2查看 61关注 0票数 0

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

crontab是:

代码语言:javascript
复制
* * * * * /Users/myname/myzsh.zsh

其中myzsh.zsh是:

代码语言:javascript
复制
#!/bin/zsh
/Users/mypath_to/python /Users/myname/testscript.py

什么都没发生

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-09-08 18:59:48

原来cron本身没有权限。我拖着把它扔到了安全区的首选项和瞧!

票数 0
EN

Stack Overflow用户

发布于 2021-09-06 18:47:31

这是一个足够普遍的cron抓到你。

您的环境在交互式运行和cron运行之间是不同的。这将导致所观察到的故障。

我假设您向我们展示了crontab -l运行作为交互运行脚本的同一个用户,因此我们不存在与在cron下运行它的root不同的地方。

您的$PWD,现在的工作目录,可能很重要。许多官员的工作都会做这样的事情:

代码语言:javascript
复制
cd some_dir && ./my_script.zsh

引用自第5章crontab手册页:

..。主、壳和路径可能被crontab中的设置覆盖. ..。传递给子进程的环境基本上是来自/etc/rc的环境。

在执行脚本之前,您确实希望对环境进行润色。

至少我怀疑你需要

代码语言:javascript
复制
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详细信息。

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

代码语言:javascript
复制
MAILTO=prolle@some.email.provider.com

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69078412

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档