reboot
コマンドでマシンを再起動するはずのスクリプトをルートcrontabに設定しました。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ユーザーのcrontab:
$ 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
...はい、これは一時的な回避策whilですeインターネットがなぜ落ち続けるのかを考えます。
多分、絶対パス '/ sbin/reboot'を試してみてください... –
@ l'L'lこれはうまくいくようです。 crontabで 'reboot'コマンドを実行したスクリプトには出力がありませんが、'/sbin/reboot'には '/ sbin/reboot'が出力されています。なぜ 'reboot'それ自体では動作しないのでしょうか? – ning
'cron'はrebootコマンドのどこに手がかりがないので、場所を指定する必要があります。 'cron'では特定のコマンドだけが名前を使って呼び出すことができるので、絶対パスを与える必要があります。 –