代码之家  ›  专栏  ›  技术社区  ›  Robomato

crontab bash脚本执行-Raspberry Pi

  •  0
  • Robomato  · 技术社区  · 7 年前

    我有一个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脚本确实依赖于同一脚本目录中的其他文件,这可能是问题所在吗?

    2 回复  |  直到 7 年前
        1
  •  1
  •   Robomato    7 年前

    这就是它对我起作用的原因。我没有使用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 -是python 3.6.0安装在我的Pi上的地方,对您来说可能会有所不同。 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的日志文件。记录日志以便查看发生的情况。

    这里的关键不只是记录进展。sh bash文件执行,但添加 2>&1 -q -f 到日志请求的末尾。在我这样做之前,没有任何问题的迹象,后来我将python文件错误返回到日志文件中。

        2
  •  0
  •   erik258    7 年前

    Cron的工作异常棘手。除了工作目录(必须在某处设置)之外,还需要处理环境设置( $PATH ,例如)。

    首先,将shell脚本的标准输出和错误重定向到日志文件,以便获得反馈。