停止および再起動時に正しく実行されるようにJava 8システムサービスを構成する

停止および再起動時に正しく実行されるようにJava 8システムサービスを構成する

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これを達成するために私のファイルに何を追加できるかについてのアイデアはありますか?

ベストアンサー1

おすすめ記事