工作好きな情報系の雑記

[Raspberry Pi]起動時に何かを自動実行させる方法比較

起動時にとあるプロセスを自動で起動させる必要が出てきたので、方法を調べたんだけど、わりかし色んな方法がある事が分かった。
ただ、どれもが同じように振る舞うわけではなく、それぞれ微妙に差異があったので、それについて記録しておく。

ちなみに、起動時に走らせたいファイルは以下の3つ。

A.py 同ディレクトリにある複数のpythonスクリプトを呼び出して使うようなpythonスクリプト
B.py ボタンの割り込みを感知して、"sudo shutdown -h now"を呼び出すpythonスクリプト
C.py ボタンの割り込みを感知して、"sudo reboot"を呼び出すpythonスクリプト

rc.local

やり方

以下のコマンドで編集画面に入る。

そしたら、ファイルの最後に「exit 0」という文言が出てくると思うので、それの前に実行したいコマンドを書く。

結果

A.pyがなぜか止まってしまった。
もしかしたらパスの関係とかで、実行スクリプトが他のスクリプトにアクセスできないのかもしれない。

crontab

やり方

以下のコマンドで編集画面を出す。

そんで、末尾に実行したいコマンドを書く。

結果

一応全部動いた。
初めはB.pyの"sudo shutdown -h now"とか"sudo reboot"が効かなかったんだけど、なんやかんややってたら動くようになってた。
意味が分からん

あとcrontabを使うと、rc.localが実行されない?
いやそんな事はないはずなんだけど、crontabを使うとrc.localに書いておいたものが起動しない。
ん~、これはもう少し要検証って感じ。

systemd

やり方

serviceファイルを作成する。
A.pyの場合で説明するが、同じようにB.py、C.pyについてもserviceファイルを作る。

中身は以下の通り。

そして、自動で起動できるよう設定する。

結果

これも"sudo reboot"とかが効かない。
はえ~なんでだろ

追記:

これは試してないけど、もしかしたらUserとかGroupをrootにしたらうまく動くかもしれない。

2017/01/14 systemdに関して追記 Raspberry Piで自動起動する方法  Raspber…
Raspberry Piでプログラムを自動起動する5種類の方法を比較・解説 - 変デジ開発室
モバイルバージョンを終了