简体   繁体   English

使用子进程执行 python 脚本时 Cron 作业失败

[英]Cron job fails when executing python script with subprocess

My cron runs ok when it's set up like this:我的 cron 在这样设置时运行正常:

* * * * * usr/local/bin/python3 /Users/username/path/to/my/script1.py
* * * * * bash -c -l "/Users/username//path/to/my/script2.sh"

When I run the above scripts manually in terminal like this, it also works:当我像这样在终端中手动运行上述脚本时,它也可以工作:

usr/local/bin/python3 /Users/username/path/to/my/script1.py
sh /Users/username//path/to/my/script2.sh

However, when I try to run both scripts as a subprocess in a parent.py script scheduled as cron job then it won't work and throw this error:但是,当我尝试将这两个脚本作为调度为 cron 作业的 parent.py 脚本中的子进程运行时,它将无法工作并抛出此错误:

/bin/sh: usr/local/bin/python3: No such file or directory

My parent.py code:我的 parent.py 代码:

import subprocess

subprocess.run('usr/local/bin/python3 /Users/username/path/to/my/script1.py && sh /Users/username//path/to/my/script2.sh', shell=True)

however, when I run parent.py manually in terminal like this, it works fine:但是,当我像这样在终端中手动运行 parent.py 时,它工作正常:

usr/local/bin/python3 /Users/username/path/to/my/parent.py

I've tried adding #!/usr/local/bin/python3 to my parent.py but this didn't help.我尝试将#!/usr/local/bin/python3添加到我的 parent.py 中,但这没有帮助。

Could someone help with this?有人可以帮忙吗? Thanks in advance.提前致谢。

You are missing a slash before usr/local/python3!您在 usr/local/python3 之前缺少一个斜杠!

It should be /usr/local/python3它应该是 /usr/local/python3

See this for more details.有关更多详细信息,请参阅内容。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM