【问题标题】:Linux Raspbian (raspberry Pi) crontab not running sh. Works fine running manuallyLinux Raspbian (raspberry Pi) crontab 未运行 sh。手动运行正常
【发布时间】:2015-12-21 02:25:18
【问题描述】:

我已经尝试了各种方法来使其正常工作。我最初创建了一个 Python 脚本来与 Twitter 交互。该脚本运行良好,并做了它应该做的事情。我添加到 crontab,但它不会运行。然后我听说直接与 Python 交互有一些问题,所以写了一个 launcher.sh 来运行 Python 脚本并将其添加到 crontab 中。还是不行。 Launcher.sh 是可执行的,手动运行可以正常工作。代码如下:

sudo sh launcher.sh 运行良好 - 这包含一个运行 python 脚本的脚本 启动器内容:

#!/bin/sh
# launcher.sh
# navigate to home directory

cd /
cd home/pi
sudo python retweet.py
cd / 

在根 crontab 我有(注意这是根 crontab sudo crontab -e):

@reboot 0,15,30,45 * * * * sh /home/pi/launcher.sh >/dev/null 2>&1

这是每 15 分钟运行一次。我也试过/15 * * * *

我检查了系统日志,可以看到在按照这一行重新启动后,crontab 确认重新启动请求时开始。

但是脚本永远不会运行。 这是系统日志:

Jan 22 09:36:12 raspberrypi /USR/SBIN/CRON[2113]: (root) CMD (0,15,30,45 * * * *           sh /home/pi/laucher.sh >/dev/null 2>&1 )

我对 Linux 世界还很陌生,我读过很多书,并且边走边学。我希望有人可以帮助我。

【问题讨论】:

  • 如果 root 将运行脚本,则不需要sudo。 (另外cd /; cd home/pi 可能只是cd /home/pi(如果确实需要某个工作目录),并且脚本末尾的任何地方都不需要cd。)顺便说一句,你怎么知道脚本没有运行?
  • 感谢天网 - 我尝试了许多不同的化身并遵循网络上的指导。我可以确认更改没有起作用:(。我在这里缺少什么?直接执行 Python 脚本或 launcher.sh 都可以正常执行任务。我之前(在我制作启动器之前)在 crontab 中有链接直接到python脚本,所以@reboot 0,15,30,45 * * * * python /home/pi/retweet.py 也不起作用
  • 你怎么知道脚本没有被执行?出于调试目的,您可以将输出通过管道传输到文件(而不是 /dev/null),和/或在 Python 脚本中添加一些日志记录。并在 shell 脚本顶部添加set -x
  • 因此,Python 中的脚本会查找某些主题标签并转发它们。我正在查看最新的主题标签,并且可以看到它们比帐户转发的最后一个更新(按小时)。在手动运行时(我不想一次通过 twitter API 推送大量数据,所以我必须每小时手动运行一次)平均会在一小时内处理 12 条转发。我知道他们在那里,我可以在提要中看到他们。它们没有被脚本处理。
  • Python 脚本很可能在 cron 中运行,但脚本内部的某些东西可能会失败。没有看到脚本我们只能猜测,我的猜测是身份验证问题。除非您尝试从 cron、sh 和 Python 获得更多反馈,否则无能为力。

标签: linux shell raspberry-pi crontab raspbian


【解决方案1】:

感谢您的所有 cmets - 这是我的新手错误。简而言之,您不能在 @reboot 后跟时间规范。 0 * * * * *。我已经删除了@reboot 命令,现在一切正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-06
    • 1970-01-01
    • 1970-01-01
    • 2017-04-11
    • 2016-04-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多