毎日定期的にラズパイを再起動させ、起動時に動かしたいシェルスクリプトがあったとする。
シェルスクリプトの中身はこんな感じ
bot.sh
echo "スタート"
node /home/pi/dev/bot.js
方法1. Cron
Crontabで再起動後にスクリプトを起動するよう設定する。
cronを設定
crontab -e
起動日時を指定
毎日9時に実行する書き方
00 9 * * * sh /home/pi/bot.sh
cronの確認
crontab -l
動作確認
cronのログをみたときに
vim /var/log/cron.log
起動してるようだが、rootユーザーで動作してないようで、正常にスクリプトが動作しなかった。
crontabではrootユーザーでは動かせない?
方法2. rc.local
スクリプトを/usr/local/bin/へ移動
bot.sh
というスクリプトを /usr/local/bin/
へ移動させる。
$ sudo mv ./bot.sh /usr/local/bin/
/etc/rc.localに起動したいスクリプトを指定
/etc/rc.local をvimで開く
sudo vim /etc/rc.local
exit 0
の前にbot.sh
を追加した。
(パスは書かなくても動いた)
/etc/rc.local
bot.sh
exit 0
動作確認
結果はOK
ラズパイ再起動させて起動を待った結果、無事にスクリプトが動いていました。
参考にしたリンク
Cron
- crontabを設定しても実行されない時の確認ポイント https://gist.github.com/koudaiii/49ac3f8b7c207f0da31f
- Cron Builder - GUI で簡単に cron 書式を記述 http://cronbuilder.otchy.net/
rc.local
- Raspberry Piでプログラムを自動起動する5種類の方法を比較・解説 http://hendigi.karaage.xyz/2016/11/auto-boot/