systemctl を使用して Linux サービスを一覧表示する方法
公開: 2022-10-23Linux コンピューターは、サービスまたはデーモンと呼ばれる多くのバックグラウンド タスクに依存しています。 systemd ベースのディストリビューションには、実行中、無効、または失敗したサービスを確認できる組み込みコマンドがあります。
サービスとデーモン
サービスとデーモンは、ユーザー インターフェイスなしで実行されるバックグラウンド タスクであり、人間の操作を必要とせず、通常はコンピューターの起動時に開始されます。
かつて、サービスはinit
によって起動されました。これは、最初に起動されるプロセスでした。 サービスの詳細は、「/etc/init/d」ディレクトリにある一連のスクリプトに保持されていました。 systemd 以外のディストリビューションでは、まだそうです。
systemd の世界では、サービスはsystemd
によって起動されます。これは、起動される最初のプロセスです。 サービスの詳細は、「/usr/lib/systemd」ディレクトリにあるユニット ファイルに保存されます。
man ページによると、 systemd
はシステムおよびサービス マネージャーです。 systemctl
コマンドを使用して、サービスやデーモンなど、systemd システムのさまざまな側面を検査および制御できます。
ここでは systemd 固有のコマンドを見ているため、最初に知っておく必要があるのは、systemd ベースのディストリビューションを実行しているかどうかです。
関連: Linux の systemd が何年も経った今でも意見が分かれる理由
init または systemd ベース?
Arch、Red Hat、Debian、およびそれらから派生した多くのディストリビューションを含む、Linux ディストリビューションの大多数は systemd を使用しています。 これには、ディストリビューションの Ubuntu ファミリ、Fedora とそのスピン、Manjaro とその他の Arch ベースのディストリビューションが含まれます。
ただし、systemd の使用を避けるために特別に作成された、これらのディストリビューションの一部のフォークまたはフレーバーがあります。 それだけでなく、runit や s6-linux-init など、ディストリビューションにデフォルトで付属しているものの代わりに、誰かが使用することを選択できる他の init システムがあります。
自分でセットアップしていない Linux コンピューターを管理する必要がある場合、それが systemd を使用しているかどうかを確認する唯一の方法は、確認することです。 これは、 pstree
コマンドを使用してプロセス ツリーを調べることで確認できます。 ツリーの最上部のみを確認する必要があります。つまり、最初に実行されるプロセスを探しているのです。そのため、 head
コマンドを介して出力をパイプし、最初の 5 つのエントリを要求します。
pstree | 頭-5
systemd
は起動後に実行される最初のプロセスであることがわかります。したがって、Linux の systemd ベースのインストールを使用していることは間違いありません。
関連: Linux ターミナルからプロセスを管理する方法: 知っておくべき 10 のコマンド
systemctl を使用してサービスを一覧表示する
サービスとデーモンを一覧表示するコマンドはsystemctl
です。 type
およびstate
オプションを使用してsystemctl
コマンドを改良できます。 systemctl
に実行中のサービスについて報告するように依頼しています。
systemctl --type=service --state=running
情報のテーブルが生成されます。 端末ウィンドウに対して幅が広すぎたり長すぎたりすると、デフォルトのファイル ビューアーに表示されless
。
テーブルの右端を表示するには、右矢印キーを押します。 通常のビューに戻るには、左矢印キーを押します。
Q キーを押して、less を終了します。 表示される列は次のとおりです。
- Unit : サービスまたはデーモンの名前。 このコラムのタイトルは「ユニット」です。これは、このコラムにあるものはすべて、ユニット ファイルにある
systemd
の情報を使用して起動されたためです。 - Load : サービスまたはデーモンの負荷状態。 ロードされている、見つからない、不適切な設定、エラー、またはマスクされている可能性があります。
- アクティブ: サービスまたはデーモンの全体的な状態。アクティブ、リロード中、非アクティブ、失敗、アクティブ化、または非アクティブ化のいずれかです。
- SUB : サービスまたはデーモンのサブ状態。 停止、終了、失敗、非アクティブ、または実行中の可能性があります。
- 説明: ユニットの簡単な説明。
単一のサービスに集中したい場合は、 systemctl
の出力をgrep
でパイプできます。 このコマンドは、 ssh
サービスのテーブル エントリを分離します。
systemctl --type=service --state=running | grep ssh
これまでのところ、 state=running
オプションを指定して、テーブルの内容をフィルタリングしてきました。 代わりに、サブ状態の可能な値のいずれかを使用できます: デッド、終了、失敗、非アクティブ、または実行中。
失敗したサービスを探してみましょう。
systemctl --type=service --state=failed
サブステートの組み合わせを使用できます。 コンマ区切りのリストとして入力します。 オプションの間に空白を含めないようにしてください。 これにより、いずれかの状態に一致するサービスが検索されることに注意してください。
systemctl --type=service --state=失敗、終了
右矢印キーを押して画面外の列を見ると、リストに終了したサービスと失敗したサービスが混在していることがわかります。
デフォルトでは、 systemctl
は、 systemd
systemd
起動されたプロセス (サービスとデーモン) を一覧表示します。 そのため、これらすべてのプロセスを省略して「ユニット」と呼んでいます。
ユニットを一覧表示するようにsystemctl
に明示的に要求するオプションがありますが、これはデフォルトのアクションであるため、あまり使用されません。
これらのコマンドは同じ結果を生成します。
sudo systemctl list-units --type=service --state=running
sudo systemctl --type=service --state=running
systemctl を使用してユニット ファイルを一覧表示する
list-unit-files
オプションを含めることで、 systemctl
コマンドの範囲を拡張できます。 これは、起動されたサービスとデーモンについて報告するだけでなく、コンピューターにインストールされているすべてのユニット ファイルも一覧表示します。
systemctl list-unit-files --state=enabled
色付きのテーブルが表示されます。
state
オプションを削除すると、フィルタリングが削除されます。 出力には、状態に関係なく、インストールされているすべてのユニット ファイルが含まれます。
systemctl リストユニットファイル
出力には、前のコマンドの結果よりも多くのエントリが含まれます。
私たちのテスト コンピューターでは、結果リストは、以前のコマンドの出力よりもほぼ 4 倍長くなります。
state
オプションを使用したい場合は、前に見たように複数の状態を使用できます。 同じルールが適用されます。 オプションはコンマ区切りの値として指定し、空白を含めないでください。
このコマンドは、無効になっている、または起動に失敗したすべてのユニット ファイルを一覧表示します。
systemctl list-unit-files --state=enabled,failed
少数の結果が表示され、状態オプションで行った選択に従ってフィルタリングされます。
1つのサービスを詳しく見る
1 つのサービスまたはデーモンに関する何かが興味をそそり、さらに詳しく調べる必要がある場合は、systemctl status オプションを使用して詳細に調べることができます。
SSH デーモン sshd を見てみましょう。 status オプションとサービスまたはデーモンの名前を使用するだけです。
systemctl ステータス sshd
このコンパクトなディスプレイには次のものが表示されます。
- サービスの名前と簡単な説明。 色分けされたドットは、実行中かどうかを示します。 緑は実行中、赤は実行していないことを示します。
- ユニットファイルへのパスを含む、ロードされたもの。
- 実行されている時間。
- ドキュメントが
man
マニュアルのどこにあるか。 - 実行中のインスタンスのプロセス ID。
- このサービスの同時実行インスタンスの数。 通常、これは 1 つになります。
- メモリの消費量。
- 消費された CPU 時間。
- サービスが属するコントロール グループ。
システム ログの関連エントリも表示されます。 これらは通常、サービスの起動などのイベントです。 これらは、正しく起動しなかったサービスまたはデーモンを調べている場合に役立ちます。
関連: journalctl を使用して Linux システム ログを読み取る方法
自律神経系
サービスとデーモンは、オペレーティング システムの多くの自動アクションを提供するため、非常に重要です。 つまり、彼らの健康も重要です。
サービス、デーモン、およびユニット ファイルのビューを取得するのは簡単で、有益です。 これは、サービスまたはデーモンが開始を拒否した場合の貴重なトラブルシューティング手順でもあります。
関連: Linux で「Too Many Open Files」エラーを解決する方法