gpt4 book ai didi

python - Crontab 不会在 Mac OS 上运行 python

转载 作者:行者123 更新时间:2023-12-05 06:15:48 24 4
gpt4 key购买 nike

我已经找到了所有我能找到的答案并尝试了所有方法,但我仍然无法让我的 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 文件保存在另一个目录中。将文件移至主目录后,一切正常。

关于python - Crontab 不会在 Mac OS 上运行 python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62329813/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com