【问题标题】:Crontab Issues running Python运行 Python 的 Crontab 问题
【发布时间】:2013-02-26 08:41:13
【问题描述】:

我正在尝试让 cron 每 10 分钟运行一次此命令;

(在 /home/pi/myst-myst/ 目录中)

python myst.py `./monitor.sh`

我已经尝试了几乎所有方法来让它工作,但 cron 无法正确执行它。这是我目前所拥有的;

*/1 * * * * /usr/bin/python /home/pi/myst-myst/myst.py `./monitor.sh`

任何帮助将不胜感激。

我可以使用 crontab 的替代方法吗?我可以使用 bash 脚本来执行 python,然后使用 cron 来执行该 bash 脚本吗?

【问题讨论】:

  • ehat 的确切意思是“不会正确执行”?日志中有什么内容吗?
  • 我在日志中找不到任何相关内容..

标签: python crontab raspberry-pi


【解决方案1】:

我在直接从 cron 调用 python 和 perl 时遇到了问题。对于 perl,它归结为 LIBPATH 默认为不足。

我建议将您的命令包装在 shell 脚本中并添加“set -x”以跟踪问题

#!/bin/sh
set -x
export PYTHONPATH=/my/python/modules:$PYTHONPATH
/usr/bin/python /home/pi/myst-myst/myst.py $(/home/pi/myst-myst/monitor.sh)

直接调用它以确保它工作,然后尝试通过 cron 调用。确保重定向 stdout 和 stderr 以捕获任何错误消息

 */10 * * * * /home/pi/myscript.sh > /home/pi/stdout 2> /home/pi/stderr

【讨论】:

    【解决方案2】:

    试试这个方法:

     */1 * * * * /home/pi/myst-myst/myst.py `./monitor.sh`
    

    并在 myst.py 中添加以下内容

    #!/usr/bin/env python
    

    【讨论】:

    • 这不起作用,因为 cron 的当前目录不是 monitor.sh 的目录
    【解决方案3】:

    您的脚本是否依赖于任何环境变量,例如PYTHONPATH? 如果是这样,当被 cron 调用时,环境将丢失。

    你可以试试:

    */1 * * * * PYTHONPATH=/my/python/modules/ /usr/bin/python /home/pi/myst-myst/myst.py `./monitor.sh`
    

    【讨论】:

    • 这不起作用,因为 cron 的当前目录不是 monitor.sh 的目录
    【解决方案4】:

    你可以做类似的事情

    */10 * * * * cd /home/pi/myst-myst/;/usr/bin/python /home/pi/myst-myst/myst.py $(./monitor.sh)
    

    在运行命令之前更改工作目录。

    编辑:替换反引号

    【讨论】:

    • 我试过了,但没用。即使这样也不能正常工作; sudo /usr/bin/python /home/pi/myst-myst/myst.py /home/pi/myst-myst/monitor.sh
    • 您可能应该在脚本 (myst.py) 中添加一些输出,但我可以发现两件事,根据我的经验,反引号似乎在 crontab 中造成问题,应该用 $(command ),并且您需要 'cd /home/pi/myst-myst;' part 或 ./monitor.sh 将不起作用,因为它不在当前目录中。
    • 我已对其进行了修改以匹配您的,但似乎仍然无法正常工作。
    猜你喜欢
    • 2022-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-06
    • 2013-09-02
    • 2015-10-05
    • 2017-12-16
    • 2022-09-16
    相关资源
    最近更新 更多