ラズパイを24時間稼働させぱなしにしておくと稼働させてる状態にもよりますが1ヶ月程度でハングアップしてしまうことがママあります
そこでラズパイを定期的に再起動するように設定します
再起動の設定にはcronを使用します
まずは再起動方法の確認
再起動のコマンドはこれ
$ sudo reboot
もしくはこれ
$ sudo shutdown -r now
コンソールで上記コマンド実行すると再起動するはずです
cronが動作するか確認しておく
ラズパイでスケジュール実行するのはcronってやつを使います、Windowsで言うタスクスケジューラみたいなやつです
cronデーモンが動いているか確認
$ systemctl status cron.service
「active (running)」って表示されれば動いてます
cronの設定開いてスケジュール登録する
cronのファイル編集してスケジュール登録します
コマンドはこれ
$ sudo crontab -e
初回起動時にはこんなメッセージが出てきて使用するエディタを選択できます
とりあえずnano選んでおけばいいと思います
Select an editor. To change later, run 'select-editor'. 1. /bin/nano <---- easiest 2. /usr/bin/vim.tiny 3. /usr/bin/code 4. /bin/ed Choose 1-4 [1]:
nanoの編集画面で再起動のスケジュールを書き込んで保存します
動作確認用に書き込んだ内容はこんな感じ
#16:25に再起動する 25 16 * * * /sbin/reboot
毎日16:25に再起動するというコマンドになります
さっきは「sudo reboot」でリブートしましたが
cronでは「/sbin/reboot」と書きます
保存は「ctrl+O」押したあと保存するファイル名を聞かれるので名前を変えずにエンターで保存します
閉じるときは「ctrl+X」です
動作確認
cronの中身確認
$ sudo crontab -l
cronのデーモン再起動
$ sudo /etc/init.d/cron restart
時間になって再起動が始まったら設定成功です
最終的な設定値
上記では動作確認のためとりあえず作業中の時間を指定していしていたので最終的に以下に設定しました
#毎週日曜日の4:00に再起動する 00 04 * * 0 /sbin/reboot
ログの設定
ログファイルは「/var/log/cron.log」にありますがファイルが無い場合ログの出力設定がされていない可能性があります
ログの出力設定は以下のファイルで設定します
「/etc/rsyslog.conf」
/etc/rsyslog.conf の一部抜粋
############### #### RULES #### ############### # # First some standard log files. Log by facility. # auth,authpriv.* /var/log/auth.log *.*;auth,authpriv.none -/var/log/syslog #cron.* /var/log/cron.log daemon.* -/var/log/daemon.log kern.* -/var/log/kern.log lpr.* -/var/log/lpr.log mail.* -/var/log/mail.log user.* -/var/log/user.log
cronの所がコメント化されてますね
#外して保存すれば有効化されます
#cron.* /var/log/cron.log
↓以下に変える
cron.* /var/log/cron.log
設定変更後にデーモンの再起動を行います
sudo /etc/init.d/rsyslog restart
きっとこれで上手くいくでしょう
コマンドの解説とか
cronの書式
* * * * * [実行コマンド]
「*」の部分にスケジュールする数値を入れます
左から順番に「分」「時」「日」「月」「曜日」となっています
ちなみに上記の状態だと1分毎にコマンドが実行されます
「sudo crontab -e」で編集しているファイルってどこにある?
以下のパスにありました
/var/spool/cron/crontabs/root
cronで使用するエディタを変更する
初回実行時に出てくるエディタの選択ですが
後から使用エディタ変えたいときは以下のコマンドで変更することが出来ます
$ select-editor