我有一个bash脚本,我用它来执行一个特定版本的Python(3.6)的python文件。 Bash脚本当前位于我的桌面上(/home/pi/Desktop/go.sh)
#!/bin/bash
python3.6 /home/pi/scriptDir/myScript.py
这是我的crontab条目,当我做crontab -l(注意,我已经删除了我的其他工作)
* * * * * bash /home/pi/Desktop/go.sh # JOB_ID_3
当我使用命令行或从GUI运行此文件时,它正确执行。
当我有crontab这样做时,没有任何反应。
我的python文件和bash脚本都是可执行的。 chmod + x
有什么明显的东西我不见了吗?
**我的python脚本确实依赖于同一脚本目录中的其他文件,这可能是问题吗?
这就是让它为我工作的原因。我没有使用我的python安装的完整路径。除非您记录bash文件,否则没有迹象表明您有问题。
这是我的bash文件。 echo只是为了确定我确实正在运行bash文件。
#!/bin/bash
echo started
/home/pi/Python-3.6.0/python home/pi/myScriptFolder/myScript.py
echo finished
要分解执行脚本的行:/home/pi/Python-3.6.0/python
- 是我的Pi上安装了python 3.6.0的地方,它可能与你不同。 home/pi/myScriptFolder/myScript.py
是我想要运行的脚本。
这是我的cron声明:
*/15 * * * * bash /home/pi/Desktop/go.sh > /home/pi/Desktop/clog.log 2>&1 -q -f
打破这一行:*/15 * * * *
是cron时间,在这种情况下每15分钟。 bash /home/pi/Desktop/go.sh
指定运行bash文件和该文件的目录。 > /home/pi/Desktop/clog.log 2>&1 -q -f
这最后一节创建了一个名为clog.log的日志文件,这样你就可以看到发生了什么。
这里的关键不仅仅是记录go.sh bash文件执行,而是将2>&1 -q -f
添加到日志请求的末尾。在我这样做之前没有任何问题的迹象,之后我得到了返回到日志文件中的python文件错误。
Cron的工作非常棘手。除了工作目录(您必须在某处设置),您还需要处理环境设置(例如$PATH
)。
首先将shell脚本的标准输出和错误重定向到日志文件,以便获得反馈。