私はsystemd型のUbuntuサービスを持っていますsimple
。foo.service
Pythonスクリプトがフォーマットで実行されますExecStart
。
その後、他の種類のサービスを実行サービスoneshot
と呼びます。foo-restart.service
/usr/bin/systemctl restart foo.service
最後に、PathChanged
別のファイルの指示はfoo-restart.path
私のPythonスクリプトを指しています。
アイデアは、ファイルを更新するとサービスが再起動されることです。この問題は発生しますが、時間がかかり、次のようにjournalctl -fu foo.service
表示されます。
Oct 08 22:45:14 Vpn445 systemd[1]: Stopping Foo...
Oct 08 22:45:58 Vpn445 python3[2686278]: Yay
Oct 08 22:46:44 Vpn445 systemd[1]: foo.service: State 'stop-sigterm' timed out. Killing.
Oct 08 22:46:44 Vpn445 systemd[1]: foo.service: Killing process 2686278 (python3) with signal SIGKILL.
Oct 08 22:46:44 Vpn445 systemd[1]: foo.service: Killing process 2686305 (python3) with signal SIGKILL.
Oct 08 22:46:44 Vpn445 systemd[1]: foo.service: Killing process 2689506 (python3) with signal SIGKILL.
Oct 08 22:46:44 Vpn445 systemd[1]: foo.service: Main process exited, code=killed, status=9/KILL
Oct 08 22:46:44 Vpn445 systemd[1]: foo.service: Failed with result 'timeout'.
Oct 08 22:46:44 Vpn445 systemd[1]: Stopped Foo.
Oct 08 22:46:44 Vpn445 systemd[1]: Started Foo.
このプロセスをより速くするにはどうすればよいですか、サービスをより速く停止して再起動し、最後に十分に再ロードするにはどのコマンドをトリガーする必要がありますか?
また、fooタイプをに変更してサービスをoneshot
実行した後に再起動しましたが、運がありませんでした。systemctl daemon-reload
10秒ごとにメッセージが記録されるため、問題がわかります。プロセスの開始を停止しますが、スクリプトは強制的に停止されるまで実行され続けます。
Oct 08 23:38:28 Vpn445 systemd[1]: Stopping Foo...
Oct 08 23:38:33 React python3[2692568]: After change
Oct 08 23:38:43 React python3[2692568]: After change