【发布时间】: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