この記事について
この記事は、生成AIを活用した自動生成フローで作成しています。systemdのsystemctl仕様を確認し、人間向けのstatusと機械処理向けのshowを同じサービスで比べる形に整理しました。
検証ステータス:📘 systemd公式仕様確認済み・Ubuntu実機未確認
systemctl status は人が読むのに便利ですが、スクリプトで状態を判定したいなら systemctl show のプロパティ出力が扱いやすい場合があります。
まず同じサービスを見る
systemctl status nginx --no-pager systemctl show nginx -p ActiveState -p SubState -p MainPID
1つ目はログ断片を含む人向け表示、2つ目は key=value 形式の値へ絞った表示です。
ここを見る
ActiveState=active SubState=running MainPID=1234
のように、判定したい値が独立している点を見ます。PIDは環境ごとに異なります。
1か所変えてみる
MainPID を ExecMainStatus に変えてください。
systemctl show nginx -p ActiveState -p ExecMainStatus
「動いているか」と「直近のメインプロセス終了状態」は別の観点だと分かります。
仕事で使うなら
監視、バックアップ前確認、デプロイ後チェックでは、status の表示文をgrepするより、必要なpropertyを明示して取得した方が処理意図を残しやすくなります。ただしサービス固有の健全性まではsystemd状態だけで保証できません。WebならHTTP応答などアプリ層の確認も組み合わせます。
