ベストアンサー1
その有用性を過大評価しているかもしれません:)。
「開始/開始/停止/停止/再開」の場合は、systemdに表示する必要があります。 (たとえば、「アクティビティ:アクティビティ(実行中)」と表示されます。)完了通知を開始するいくつかの方法を実装する限り。これにより、Systemdは正確な情報を表示できます。
良いことは、あなたが要求した人が読むことができるステータスメッセージと同じ機能を使用してサービス準備通知が送信されることです:)。
長期実行プログラムを作成する場合可能STOPPING=1
ユーザーがsystemdなどを介さずにプロセスに直接シグナルを送信する場合をさらに実装することにしましたsystemctl stop test.service
。RELOADING=1
私はsystemdが使用されているときにその状態を表示したい場合でもこのアプローチが必要だと思いますsystemctl reload test.service
。 (停止の場合、systemdはプログラムがいつ終了したかを知っています...プロセスが終了したことを確認できるからです。)
Cプログラムでは:https://www.freedesktop.org/software/systemd/man/sd_notify.html
状態=...
サービスの状態を記述する 1 行の UTF-8 状態文字列をサービス管理者に渡します。これは自由形式であり、さまざまな目的に使用できます。通常の状態フィードバック、fsckなどのプログラムは完了率を通過でき、失敗したプログラムは人間が読めるエラーメッセージを伝えることができます。例: "STATUS=ファイルシステム検査の 66% が完了しました..."
シェルスクリプトとしてのコマンド:https://www.freedesktop.org/software/systemd/man/systemd-notify.html
--status=
デーモンの自由形式の状態文字列をinit systemdに送信します。このオプションは状態文字列を引数として使用します。これはsystemd-notify STATUS = ....と同じです。このオプションの意味の詳細については、sd_notify(3)を参照してください。