我在我的根crontab中设置了一个脚本,该脚本应使用reboot
命令重新启动我的计算机。
然而,尽管reboot
在根用户的路径中,但我收到了reboot: command not found
的错误提示。
$ sudo su
$ which reboot
/sbin/reboot
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/go/bin
我的脚本:
#!/bin/bash
ping 8.8.8.8 -c 1 > /dev/null 2>&1; exit_code=$?
time_stamp=$(date +"%Y%m%d-%H%M")
if [ $exit_code -ne 0 ]; then
(1>&2 echo "$time_stamp: failed with exit code $exit_code; restarting now")
reboot
else
echo "$time_stamp: ok"
fi
root用户的定时任务表:
$ sudo crontab -l
58 * * * * /home/pi/github/ping-restart/ping-restart.sh >> /home/pi/github/ping-restart/cron.log 2>&1
$ sudo su
58 * * * * /home/pi/github/ping-restart/ping-restart.sh >> /home/pi/github/ping-restart/cron.log 2>&1
......是的,这只是一个临时解决方法,我正在研究为什么网络会不断掉线。
/sbin/reboot
... - l'L'lwhich reboot
的脚本没有输出(表示未找到),而带有which /sbin/reboot
的脚本则输出了/sbin/reboot
,正如预期的那样。你有什么想法为什么单独使用reboot
无法工作? - ningcron
不知道重启命令的位置,所以你必须提供它的路径。在cron
中,只有特定的命令可以使用名称调用,因此通常需要提供绝对路径。 - l'L'ldate
表示/bin/date
,basename
表示/usr/bin/basename
,traceroute
表示/usr/sbin/traceroute
)的命令。reboot
有什么特别之处? - ning