以root bash身份运行脚本

时间:2019-05-16 12:03:39

标签: bash unix

我有以下bash脚本,我正在尝试将其安排为cron作业。 我在/etc/cron.d/cronjob

*/1 * * * * root /home/area/reboot.sh

但是它不起作用... 如果我使用

从命令行运行脚本
sudo /home/area/reboot.sh

如果工作正常

下面是脚本

#!/bin/bash

    if [[ `awk '{print $0/60;}' /proc/uptime | cut -d . -f1` -gt 10 ]];then
    echo 1 > /proc/sys/kernel/sysrq
    echo b > /proc/sysrq-trigger
    fi

5 个答案:

答案 0 :(得分:0)

只需使用sudo crontab -e来编辑crontab

也可以使用

*/1 * * * * /home/area/reboot.sh

代替

*/1 * * * * root /home/area/reboot.sh

答案 1 :(得分:0)

在脚本开头设置路径:

this.isAllowed

答案 2 :(得分:0)

在此任务上有一些误导性信息。

首先,对于系统cron表(/etc/crontab、/etc/cron.d/*),需要一个用户名。该作业是在环境或该用户下执行的。这与通常的用户crontab不同。所以这是正确的:

*/1 * * * * root /home/area/reboot.sh
            ^^^^
           username

关于*/1:这表示:每分钟,可以除以1,而无余数。因此,它与*相同。

您的问题的答案: 我不知道这是怎么回事。设置PATH=SHELL=可能是解决方案,也可能不是解决方案。无论如何,设置MAILTO=和cron会向您发送有关错误的邮件。阅读man 5 crontab。如果您的系统上不可用,请用Google搜索。

答案 3 :(得分:0)

确保您具有cron文件的执行权限。

  

chmod + x /home/area/reboot.sh

还尝试在脚本前面添加sh。所以在crontab -e

  

* / 1 * * * * / bin / sh /home/area/reboot.sh

答案 4 :(得分:0)

使用以下内容修复了该问题

echo 1 | sudo tee /proc/sys/kernel/sysrq
echo b | sudo tee /proc/sysrq-trigger