Skip to content

systemdを用いた自動起動方法

cagalliorb edited this page Sep 6, 2017 · 5 revisions

まず以下のコマンドでrover.serviceという名前のファイルを作る.(/etcじゃなくても/libでも可能で,roverという名前は自由)

sudo nano /etc/systemd/system/rover.service

nanoで開いたら、以下のように記入する.

今回は/home/pi/cansat/end2end.shを実行したい時の例である.

[Unit]
Description = Rover Auto Start

[Service]
WorkingDirectory=/home/pi/cansat
ExecStart=/home/pi/cansat/end2end.sh
Type=simple
Restart=Always

[Install]
WantedBy=multi-user.target

その後、シェルスクリプトとサービスに実行権限を与える以下のコマンドを打つ.

sudo chmod 644 /etc/systemd/system/rover.service
sudo chmod 0755 /home/pi/cansat/end2end.sh

つぎにサービスのupdateなどをかねて次のコマンドを打つ.

sudo systemctl daemon-reload
sudo systemctl enable rover.service

そして

systemctl list-unit-files --type=service

で自分のサービスがenabledになっているかを確認. そうするとsudo reboot nowでrebootすると、再起動時にプログラムが自動で立ち上がる。

ちなみに

sudo systemctl status rover.service

で現在のstatusが見られる.

自動起動させた後止めるには,

sudo systemctl stop rover

とする. ただし,再起動後も動かないようにするには

sudo systemctl disable rover.service

で再起動すると次回はサービスが自動起動しない。