systemdサービスの現在のサービス状態を表示する方法は?

systemdサービスの現在のサービス状態を表示する方法は?

ここに画像の説明を入力してください。

サービス(test.service)があり、systemdコマンドを使用するときに図に示されている情報を表示したいと思いますsystemctl status test.service。特にこの[ステータス:]行を見たいですavahi-daemon 0.6.30 starting up。私のサービスは今それを表示しません。starting/start/stop/stopping/restartStatus:...を介してサービスの現在の状態を表示しようとしています。

どうすればいいですか?

あなたの助けを楽しみにしています。ありがとうございます!

ベストアンサー1

その有用性を過大評価しているかもしれません:)。

「開始/開始/停止/停止/再開」の場合は、systemdに表示する必要があります。 (たとえば、「アクティビティ:アクティビティ(実行中)」と表示されます。)完了通知を開始するいくつかの方法を実装する限り。これにより、Systemdは正確な情報を表示できます。

良いことは、あなたが要求した人が読むことができるステータスメッセージと同じ機能を使用してサービス準備通知が送信されることです:)。

長期実行プログラムを作成する場合可能STOPPING=1ユーザーがsystemdなどを介さずにプロセスに直接シグナルを送信する場合をさらに実装することにしましたsystemctl stop test.serviceRELOADING=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)を参照してください。

おすすめ記事