Raspberry pi中的Crontab并没有运行一个非常简单的脚本

时间:2016-01-18 14:27:05

标签: linux raspberry-pi crontab

我是Linux的新手,我在Raspberry Pi中已经在这个问题上挣扎了一段时间并且没有成功。

首先,我在/home/myfile.sh中编写了一个简单的脚本,如下所示:

#!/bin/bash
clear
echo "hi"

然后我执行sudo chmod 755 /home/myfile.sh授予权限。

最后我使用crontab修改了crontab -e

# some comments ...
* * * * * /home/myfile.sh

问题:

当我手动运行脚本时,它工作正常,但当我在crontab中设置上述行时,什么也没发生。我做错了什么?

4 个答案:

答案 0 :(得分:6)

尝试将输出重定向到如下文件:

* * * * * /home/myfile.sh > output_file.txt

你会看到它正在发挥作用。

Cron的工作不会输出到你正在使用的同一个终端。

修改

如果您使用crontab -e来安排作业,那么您正在使用用户的特定crontab。因此,您只能写入该用户的主目录(或他有权访问的其他目录)。因此,如果您将cron作业修改为:

* * * * * /home/myfile.sh > /home/<username>/output_file.txt

您将看到输出已写入用户主目录下的该文件。

如果你想写到其他目录,我建议你在/etc/crontab

中使用系统范围的crontab

顺便说一句,您可能希望为cron作业启用日志记录以跟踪问题。您需要编辑/etc/rsyslog.conf or /etc/rsyslog.d/50-default.conf文件并确保取消注释以下行,或者如果缺少则添加它:

cron.*                         /var/log/cron.log

然后重新启动rsyslogcron

sudo service rsyslog restart
sudo service cron restart

现在你看看你的命令是否由cron运行。

答案 1 :(得分:3)

为了展示我如何设法解决我的问题,希望能帮助他人,我在这里发布它作为我自己问题的答案:

我通过使用系统范围的crontab /etc/crontab)代替每个用户crontab crontab -e)解决了这个问题。

澄清一下,

/etc/crontab系统级 crontab。

/etc/crontab的格式如下:

# m h dom mon dow user      command
*   *  *   *   *  someuser  echo 'foo'

crontab -e 每位用户&#39; crontab&#39;。

crontab -e的格式如下:

# m h  dom mon dow  command
*   *   *   *   *   echo 'foo'

请注意,在每个用户的crontab中,没有&#39;用户&#39;字段。

答案 2 :(得分:1)

Cron作业默认通过电子邮件返回stdout和stderr,所以你需要检查那里的测试。

在标准的raspian发行版中,没有电子邮件客户端/代理,因此您需要安装它,例如:

sudo aptitude install bsd-mailx

并且您可以使用命令mail检查本地电子邮件。

通常,cron作业不会返回任何输出,将所有输出重定向到日志文件。

答案 3 :(得分:0)

您可以通过将PATH添加到crontab文件中来在用户(crontab -e)下crontab:

SHELL=/bin/sh

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
* * * * * /home/pi/command