繁体   English   中英

Crontab 不会在 Mac OS 上运行 python

[英]Crontab won't run python on Mac OS

我已经找到了所有可以找到的答案并尝试了所有方法,但我仍然无法让我的 crontab 运行 python。 我什至创建了一个 shell 脚本来运行 python,认为隔离会有所帮助,但它仍然不起作用。

我在 crontab 中有以下条目

* * * * * echo "hello" >> /tmp/test2.txt
* * * * * work.sh

第一行每分钟运行一次,以便我可以验证 cron 正在运行。 我已经验证它正在运行。 每分钟我都会在 test2.txt 中看到一个新的“hello”

第二行运行以下名为 work.sh 的脚本

#! /usr/bin/env zsh
echo "Hello World!" >> /tmp/test2.txt
/opt/miniconda3/bin/python3.7 hellopy.py

hellopy.py 然后将“Hello from Python”写入 test2.txt,如下所示:

with open('/tmp/test2.txt','a') as test_txt:
        test_txt.write("Hello from Python")

当我手动运行 work.sh 时,我在 test2.txt 中得到了我所期望的:

Hello World!
Hello from Python

但是当我让 cron 运行一段时间并查看 test.txt 时,我看到的只是来自直接 cron 行的条目,然后是来自 work.sh 的 echo 命令。 python 行不写入文件。 文本“Hello from Python”没有出现。

hello
Hello World!
hello
Hello World!
hello
Hello World!

我检查了 python 文件-rwxr-xr-x和文本文件-rwxrwxrwx的权限,它们看起来很好。

所以我知道

  1. python 代码有效
  2. shell 脚本可以成功运行 python 代码
  3. crontab 正在运行
  4. crontab 可以运行 shell 脚本
  5. shell 脚本的某些部分在由 crontab 运行时正确执行

但是由于某种原因,当 crontab 运行 shell 脚本时, python 命令不起作用。 我也尝试了以下方法,但都不起作用。

  1. 直接从 crontab 中的一行运行 python 脚本,而不是通过 shell 脚本。
  2. 在 shebang 中使用 'bash' 而不是 'zsh'
  3. 在不同的路径 /usr/bin/python3 中使用 python 的不同副本

我在所有搜索中不断遇到的解决方案与文件权限和绝对路径有关。 我已经尝试了所有可能的组合,但似乎没有任何帮助。 我完全被困住了。 任何帮助,将不胜感激。

从@chepner 为后代捕获解决方案:

问题是 cron 期望在我的主目录中找到我的 python 文件,但我已将 python 文件保存在另一个文件中。 将文件移动到主目录后,一切正常。

暂无
暂无

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

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