我已经找到了所有可以找到的答案,并尝试了所有方法,但是我仍然无法让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然后将“来自Python的Hello”写入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
的权限,它们看起来不错。
所以我知道
但是由于某些原因,当crontab运行shell脚本时,python命令不起作用。我也尝试了以下方法,但都无济于事。
我在所有搜索中一直遇到的解决方案与文件权限和绝对路径有关。我尝试了所有可能的组合,但似乎无济于事。我完全被困住了。任何帮助将不胜感激。
答案 0 :(得分:0)
在这里从@chepner捕获解决方案以供后代使用:
问题是cron希望在我的主目录中找到我的python文件,但是我将python文件保存在了另一个文件中。将文件移到主目录后,一切正常。