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サービスを一覧表示し、そのステータスを確認するコマンド。