首页 > 解决方案 > Python 脚本从终端运行,但不是 crontab。使用绝对路径但无济于事

问题描述

这是我的 crontab。

SHELL=/bin/bash
PATH=/home1/<user>/.pyenv/shims:/home1/<user>/.pyenv/bin:/usr/lib64/qt-3.3/bin:/usr/nhnkrb5/bin:/usr/bin:/bin:/usr/X11R6/bin:/home1/<user>/.local/bin:/home1/<user>/bin
HOME=/home1/<user>


# Do something
0 1 * * * /home1/<user>/.pyenv/shims/python /home1/<user>/folder/myscript.py >> /home1/<user>/folder/$(date "+%Y.%m.%d-%H.%M.%S").log 2>&1


无论我从哪里执行它,它都可以从终端完美运行。我已经尝试了此页面上的所有答案,并且我的 cron 没有返回任何错误。
https://askubuntu.com/questions/23009/why-crontab-scripts-are-not-working

我还检查了我$PATH运行的 cron 是否与我的 bash 中的相同。检查使用* * * * * env > /tmp/env.txt

请告诉我我做错了什么。

标签: pythonbashcroncentos7

解决方案


最好将第 1 行的 python 标头添加到主脚本中。例如,如果您的主脚本文件是,app.py那么它的内容可以如下:

!#/home1/<user>/.pyenv/shims/python

# Here goes your Python Script. 

接着

$ chmod +x app.py

现在您可以添加

# Do something
0 1 * * * /home1/<user>/folder/myscript.py >> /home1/<user>/folder/$(date "+%Y.%m.%d-%H.%M.%S").log 2>&1

我遇到了同样的问题,当我手动运行时脚本工作但没有使用crontab. 这种方法奏效了。


推荐阅读