2つのSpringアプリケーションが正常に実行されており、特別なことは起こりませんでしたが、突然アプリケーションが再起動した場合、Journalctlは次の行を表示します。
Jan 15 04:43:11 nyota.softworks.nl systemd[1]: Stopping calendaraggregator.service...
Jan 15 04:43:11 nyota.softworks.nl systemd[1]: calendaraggregator.service: Deactivated successfully.
Jan 15 04:43:11 nyota.softworks.nl systemd[1]: Stopped calendaraggregator.service.
Jan 15 04:43:11 nyota.softworks.nl systemd[1]: calendaraggregator.service: Consumed 3min 313ms CPU time.
Jan 15 04:43:11 nyota.softworks.nl systemd[1]: Started calendaraggregator.service.
Jan 15 10:41:43 nyota.softworks.nl systemd[1]: Stopping calendaraggregator.service...
Jan 15 10:41:43 nyota.softworks.nl systemd[1]: calendaraggregator.service: Deactivated successfully.
Jan 15 10:41:43 nyota.softworks.nl systemd[1]: Stopped calendaraggregator.service.
Jan 15 10:41:43 nyota.softworks.nl systemd[1]: calendaraggregator.service: Consumed 1min 48.505s CPU time.
Jan 15 10:41:43 nyota.softworks.nl systemd[1]: Started calendaraggregator.service.
Jan 15 18:17:17 nyota.softworks.nl systemd[1]: Stopping calendaraggregator.service...
Jan 15 18:17:17 nyota.softworks.nl systemd[1]: calendaraggregator.service: Deactivated successfully.
Jan 15 18:17:17 nyota.softworks.nl systemd[1]: Stopped calendaraggregator.service.
Jan 15 18:17:17 nyota.softworks.nl systemd[1]: calendaraggregator.service: Consumed 2min 24.748s CPU time.
Jan 15 18:17:17 nyota.softworks.nl systemd[1]: Started calendaraggregator.service.
ただし、systemctl設定AFAIKは失敗した後も再起動されません(デバッグ用に取り出されました)。
[Service]
WorkingDirectory=/home/calendaraggregator/
User=calendaraggregator
Group=calendaraggregator
ExecStart=/bin/bash /home/calendaraggregator/run.sh
何が終了を引き起こしたのかを確認する方法はありますか?
INFO org.springframework.core.log.CompositeLog [SpringApplicationShutdownHook] Stopping.
アプリケーションのログはあまり役に立ちません。理由/例外はないと言います。また、メインプログラムが再度呼び出され(この内容を記録する)、私が知っている限り、systemdを再起動するように設定していないため、アプリケーションは外部から再起動されます。
更新 2024-02-10
多くの試みの終わりに、これは複雑な問題のようです。まず、SpringBootにはランチャーまたは開発者ツールを介して内部再起動機能があります。
https://javapointers.com/spring/spring-boot/how-to-restart-spring-boot-automatically-using-actuator/
ランナーはクイックタスクを実行しませんが、開発ツールには本番ボトルにこっそり入る方法があります。たとえば、Maven Shadeプラグインを使用してビルドします。開発ツールがアクティブにならないようにするには、Javaを起動するときに次のオプションを指定する必要があります。
-Dspring.devtools.restart.enabled=false
しかし、その後も引き続き再起動が行われています。
systemd設定を完全に削除し、新しい起動シェルスクリプトを作成し、元の起動スクリプトへの呼び出しのみを記録した後、再起動の問題がなくなりました。しかし、まだ元の起動シェルスクリプトが呼び出されていることがわかります。
パッチしましたが解決されませんでした。元の起動スクリプトを引き続き呼び出すものは何ですか? !
答え1
これは正式な答えではなく回避策です。 systemdサービスは、考えられる理由なく再開されますが、サービスをユーザーに移動すると再起動しなくなることがわかりました。