crontab bash 脚本执行 - Raspberry Pi
crontab bash script execution - Raspberry Pi
我有一个 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 脚本确实依赖于同一脚本目录中的其他文件,这可能是问题所在吗?
Cron 作业非常棘手。除了工作目录(您必须在某处设置)之外,您还需要处理环境设置(例如 $PATH
)。
首先将您的 shell 脚本的标准输出和错误重定向到日志文件,以便您可以获得反馈。
这就是它对我有用的原因。我没有使用 python 安装的完整路径。除非您记录 bash 文件,否则没有迹象表明您有问题。
现在这是我的 bash 文件。 echo 只是为了确定我确实 运行ning 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
- 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 文件错误返回到日志文件中。
我有一个 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 脚本确实依赖于同一脚本目录中的其他文件,这可能是问题所在吗?
Cron 作业非常棘手。除了工作目录(您必须在某处设置)之外,您还需要处理环境设置(例如 $PATH
)。
首先将您的 shell 脚本的标准输出和错误重定向到日志文件,以便您可以获得反馈。
这就是它对我有用的原因。我没有使用 python 安装的完整路径。除非您记录 bash 文件,否则没有迹象表明您有问题。
现在这是我的 bash 文件。 echo 只是为了确定我确实 运行ning 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
- 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 文件错误返回到日志文件中。