python - 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
请告诉我我做错了什么。
解决方案
最好将第 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
. 这种方法奏效了。
推荐阅读
- python - Python中的数据框箱线图显示不正确的胡须
- bash - Shell:如何正确对齐我的文件的列
- python - 这是什么意思?(opencv,python)
- javascript - 更新状态反应没有得到正确的价值
- python - 构建绘图和校正可视化 python、pandas、matplotlib
- node.js - 如何对我的 http 服务器上的 /socket.io 路由进行速率限制?
- jenkins - 可以将隐藏值从 pipelineJob 传递到 Jenkins Scripted Pipeline 中的脚本吗?
- c# - 在没有 ASP.Net Core 服务器的情况下使用 SignalR
- google-cloud-platform - 我可以为 BigTable 节点提供少于 2.5TB 的磁盘吗?
- python - 如何从 Odoo 中的 Many2Many 列表元素(3 级)中获取 One2Many 列表?