systemctl statusとshowはどう使い分ける? サービス状態を機械判定する

Linux・CLI・DevOpsカテゴリを表すパンダのイラスト Linux・CLI・DevOps

この記事について
この記事は、生成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か所変えてみる

MainPIDExecMainStatus に変えてください。

systemctl show nginx -p ActiveState -p ExecMainStatus

「動いているか」と「直近のメインプロセス終了状態」は別の観点だと分かります。

仕事で使うなら

監視、バックアップ前確認、デプロイ後チェックでは、status の表示文をgrepするより、必要なpropertyを明示して取得した方が処理意図を残しやすくなります。ただしサービス固有の健全性まではsystemd状態だけで保証できません。WebならHTTP応答などアプリ層の確認も組み合わせます。

公式情報・一次情報

文書情報

記事タイトル
systemctl statusとshowはどう使い分ける? サービス状態を機械判定する
作成日
更新日
Source URL
https://papanda925.com/?p=16003

ライセンス: 本記事のうち、当サイトが権利を有する本文・自作図表は、特記なき限り CC BY 4.0 で利用できます。生成AIを活用して作成・編集した内容を含みます。コードについて、別途ライセンス表示またはリンク先GitHubリポジトリのライセンスがある場合は、その条件を優先します。引用・第三者資料・画像・商標等は本ライセンスの対象外です。 利用ポリシー

タイトルとURLをコピーしました