
Raspbian PiでJava 8デーモン/サービスを実行しようとしています。ラズビアンストレッチライト(内部的にはDebianに基づいています)が起動時にsystemd
実行されるだけでなく、何らかの理由で競合が発生した場合はsystemd
再起動したいと思います。
実行可能なJARはに配布され、/home/myuser/
ライブラリ(パイ4j)Raspberry PiのGPIOピンと通信するために使用されますjava
。〜しなければならないで実行してくださいsudo
。したがって、次のコマンドを実行してJARを手動で実行できます。
sudo java -jar /home/myuser/myapp.jar
そして何の問題もなく美しく実行されます。/lib/systemd/system/myapp.service
サービスファイルの最善の試みは次のとおりです。
[Unit]
Description=MyApp Service
After=multi-user.target
[Service]
Type=simple
Restart=always
ExecStart=sudo java -jar /home/myuser/myapp.jar
[Install]
WantedBy=multi-user.target
私は次のようなものを確実にmyapp.jar
使用します。Apache CommonsデーモンライブラリさまざまなLinux SIGコマンドにインテリジェントに応答します。しかし:
systemd
上記の設定を追加したら、次のようなものを使用して手動でサービスを開始し、使用しsystemctl start myapp
てサービスを終了し、systemctl stop myapp
次を使用して再起動できることをお勧めします。systemctl restart myapp
myapp.jar
起動時に実行する必要があり、sudo
競合時に再起動する必要があります(後者の実行方法がわからず、前者を正しく設定したかどうかは完全にはわかりません...)。まるで手動で同じ効果を出すようにsystemctl start myapp
- 手動コマンドを使用してRaspberry Piをシャットダウンする予定であり、
sudo halt -p
手動で実行するのと同じ効果が必要です。systemctl stop myapp
myapp.service
これを達成するために私のファイルに何を追加できるかについてのアイデアはありますか?