我有以下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
答案 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