ウェブサイト検索

Linux の Systemd で実行中のすべてのサービスを一覧表示する方法


Linux システムは、さまざまなシステム サービス (プロセス管理、ログイン、syslog、cron など) およびネットワーク サービス (リモート ログイン、電子メール、プリンター、Web ホスティング、データ ストレージなど) を提供します。 、ファイル転送、ドメイン名解決 (DNS を使用)、動的 IP アドレス割り当て (DHCP を使用) など)。

技術的には、サービスとは、バックグラウンドで継続的に実行され、リクエスト (特にクライアントから) が届くのを待つプロセスまたはプロセスのグループ (一般にデーモン として知られています) です。

Linux は、通常はプロセス マネージャーまたはサービス マネージャーを介して、サービスを管理するさまざまな方法 (開始、停止、再起動、システム起動時の自動開始の有効化など) をサポートしています。すべてではないにしても、ほとんどの最新の Linux ディストリビューションは現在、同じプロセス マネージャーである systemd を使用しています。

システムドとは何ですか?

Systemd は、Linux 用のシステムおよびサービス マネージャーです。 init プロセスのドロップイン代替品であり、SysV および LSB init スクリプトと互換性があり、systemctl コマンドは次の主要なツールです。 systemd を管理します。

Linux で実行中のサービスをリストする理由

Linux システム上で実行中のサービスを把握することは、いくつかの理由から重要です。これにより、リソース使用率の監視、問題のトラブルシューティング、およびシステム パフォーマンスの効率的な管理が可能になります。 Systemd は、アクティブなサービスに関する情報を収集する強力なコマンドを提供することで、このタスクを簡素化します。

このガイドでは、Linux の Systemd で実行中のすべてのサービスを一覧表示するプロセスを示し、あらゆる経験レベルのユーザーに包括的なチュートリアルを提供します。

Linux の SystemD で実行中のサービスをリストする

引数を指定せずに systemctl コマンドを実行すると、サービスを含むロードされたすべての systemd ユニット (systemd ユニットの詳細については systemd のドキュメントを参照してください) のリストが表示され、そのステータス (アクティブかどうかに関係なく) が表示されます。 )。

systemctl 

systemctl 内のすべてのユニットをリストする

システムにロードされているすべてのサービス (アクティブ、実行中、終了、または失敗に関係なく) を一覧表示するには、list-units サブコマンドと --type スイッチを service の値で使用します。

systemctl list-units --type=service
OR
systemctl --type=service

また、ロードされているがアクティブなサービス (実行中のサービスと終了したサービスの両方) をすべてリストするには、次のように --state オプションを値 active で追加します。

systemctl list-units --type=service --state=active
OR
systemctl --type=service --state=active

systemctl で実行中のサービスをリストする

ただし、実行中のすべてのサービス (つまり、ロードされアクティブに実行中のすべてのサービス) を一目で確認するには、次のコマンドを実行します。

systemctl list-units --type=service --state=running 
OR
systemctl --type=service --state=running

Systemd ユニットとそのステータスに関連する重要な用語を見てみましょう。

  • ユニット – ユニットは、サービス、ソケット、デバイス、またはその他のさまざまなエンティティです。
  • ロード – ユニットがロードされているかどうかを示します。ユニットはロードできますが、必ずしもアクティブである必要はありません。
  • アクティブ – ユニットがアクティブに実行されているかどうか、または問題が発生して障害または非アクティブな状態にあるかどうかを示します。
  • サブ – ユニットの特定の状態に関する追加の詳細を提供します。サービスの場合、サービスが実行中 (実行中)、停止している (終了)、または問題が発生している (失敗) かどうかを示す場合があります。
  • 説明 – ユーザーが詳細な設定ファイルを詳しく調べることなく、ユニットの目的を特定して理解するのに役立ちます。

systemctl のエイリアスを作成する

前のコマンドを頻繁に使用する場合は、次のように ~/.bashrc ファイルにエイリアス コマンドを作成して、簡単に呼び出すことができます。

vim ~/.bashrc

次に、スクリーンショットに示すように、エイリアスのリストの下に次の行を追加します。

alias running_services='systemctl list-units  --type=service  --state=running'

ファイルの変更を保存して閉じます。今後は、「running_services」コマンドを使用して、サーバー上にロードされ、アクティブに実行されているすべてのサービスのリストを表示します。

running_services	#use the Tab completion 

プロセスがリッスンしているポートを見つける

さらに、サービスの重要な側面は、サービスが使用するポートです。デーモン プロセスがリッスンしているポートを確認するには、次のように netstat または ss コマンドを使用できます。

ここで、フラグ -l は、リッスンしているすべてのソケットを表示することを意味し、-t はすべての TCP 接続を表示し、-u はすべての UDP 接続を表示し、- n は (アプリケーション名の代わりに) 数値のポート番号を表示することを意味し、-p はアプリケーション名を表示することを意味します。

netstat -ltup | grep zabbix_agentd
OR
ss -ltup | grep zabbix_agentd

5 列目はソケット: ローカル アドレス:ポートを示します。この場合、プロセス zabbix_agentd はポート 10050 でリッスンしています。

実行中のファイアウォール サービスの一覧表示

また、サーバーで、選択したサービスまたはポートとの間のトラフィックをブロックまたは許可する方法を制御するファイアウォール サービスが実行されている場合は、firewall-cmd< を使用して、ファイアウォール内で開かれているサービスまたはポートを一覧表示できます。 または ufw コマンド (使用している Linux ディストリビューションに応じて) を示します。

firewall-cmd --list-services   [FirewallD]
firewall-cmd --list-ports

sudo ufw status     [UFW Firewall]

それは今のところすべてです!このガイドでは、Linux のsystemd で実行中のサービスを表示する方法を説明しました。また、サービスがリッスンしているポートを確認する方法と、システム ファイアウォールで開かれているサービスまたはポートを表示する方法についても説明しました。

何か追加やご質問はありますか? 「はい」の場合は、以下のコメント フォームを使用してご連絡ください。