
Linuxでは、サービスはバックグラウンドで実行されるプログラムです。サービスはオンデマンドまたは起動時に開始できます。
Linuxをプライマリオペレーティングシステムまたは開発プラットフォームとして使用している場合は、Webサーバー、ssh、cronなどのさまざまなサービスを処理します。システムの問題をデバッグするときは、実行中のサービスを一覧表示する方法やサービスのステータスを確認する方法を知ることが重要です。
最近のLinuxディストリビューションのほとんどは、デフォルトのinitシステムおよびサービスマネージャーとしてsystemdを使用しています。
Systemdは、Linuxシステムを管理するためのツールスイートです。マシンの起動、サービスの管理、ファイルシステムの自動マウント、イベントのログ記録、ホスト名のセットアップ、およびその他のシステムタスクに使用されます。
この記事では、Linuxでサービスを一覧表示する方法について説明します。
Linuxサービスの一覧表示#
Systemdは、サービス、ソケット、マウントポイント、デバイスなどのユニットの概念を使用します。ユニットは、ini
のテキストファイルを使用して定義されます。 フォーマット。これらのファイルには、ユニット、その設定、および実行するコマンドに関する情報が含まれています。ファイル名拡張子は、ユニットファイルタイプを定義します。たとえば、システムサービスユニットファイルには.service
があります 拡張機能。
systemctl
systemdの制御とサービスの管理に使用されるコマンドラインユーティリティです。これはsystemdエコシステムの一部であり、すべてのシステムでデフォルトで利用できます。
ロードされているすべてのサービスユニットのリストを取得するには、次のように入力します。
sudo systemctl list-units --type service
UNIT LOAD ACTIVE SUB DESCRIPTION
cron.service loaded active running Regular background program processing daemon
...
出力の各行には、左から右に次の列が含まれています。
-
UNIT
-サービスユニットの名前。 -
LOAD
-ユニットファイルがメモリにロードされているかどうかに関する情報。 ACTIVE
-高レベルのユニットファイルのアクティブ化状態。アクティブ、リロード、非アクティブ、失敗、アクティブ化、非アクティブ化が可能です。これは、SUB
の一般化です。 列。-
SUB
-低レベルのユニットファイルのアクティブ化状態。このフィールドの値は、ユニットタイプによって異なります。たとえば、サービスタイプのユニットは、デッド、終了、失敗、非アクティブ、または実行中のいずれかの状態になります。 DESCRIPTION
-ユニットファイルの簡単な説明。
デフォルトでは、コマンドはロードされたアクティブユニットのみを一覧表示します。ロードされているが非アクティブなユニットも表示するには、--all
を渡します オプション:
sudo systemctl list-units --type service --all
ロードされたものだけでなく、インストールされているすべてのユニットファイルを表示するには、次を使用します。
sudo systemctl list-unit-files
サービスのステータスを確認するには、systemctl status
を使用します コマンド:
sudo systemctl status <service_name>.service
<service_name>
の場所 確認したいサービスユニットの名前です。たとえば、実行するnginxサービスの現在のステータスを確認するには:
sudo systemctl status nginx.service
接尾辞「.service」は省略できます。 systemctl status nginx
systemctl status nginx.service
と同じです 。● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2020-12-23 19:13:50 UTC; 5s ago
Docs: man:nginx(8)
Process: 3061052 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Process: 3061063 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Main PID: 3061064 (nginx)
Tasks: 2 (limit: 470)
Memory: 6.0M
CGroup: /system.slice/nginx.service
├─3061064 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
└─3061065 nginx: worker process
Dec 23 19:13:50 linuxize.dev systemd[1]: Starting A high performance web server and a reverse proxy server...
このコマンドは、次の情報を出力します。
Loaded
-サービスユニットがロードされているかどうか、およびユニットファイルへのフルパス。また、ユニットが起動時に起動できるかどうかも表示されます。ACTIVE
-サービスがアクティブで実行されているかどうか。端末が色をサポートしていて、サービスがアクティブで実行中の場合、ドット(●
)および「アクティブ(実行中)」の部分は緑色で印刷されます。この行には、サービスの実行時間も表示されます。Docs
-サービスドキュメント。Process
-サービスプロセスに関する情報。Main PID
-サービスPID。Tasks
-ユニットを占めるタスクの数とタスクの制限。Memory
-使用済みメモリに関する情報。-
CGroup
-関連するコントロールグループに関する情報。
サービスステータスのみを確認する場合は、systemctl is-active
を使用してください 指図。たとえば、nginxサービスが実行されていることを確認するには、次のコマンドを実行します。
systemctl is-active nginx.service
active
このコマンドは、サービスステータスを表示します。サービスがアクティブな場合、コマンドは終了ステータス0を返します。これは、シェルスクリプト内でコマンドを使用する場合に役立ちます。
結論#
systemctl
の使用方法を説明しました Linuxサービスを一覧表示し、そのステータスを確認するコマンド。