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


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

技術的には、サービスは、バックグラウンドで継続的に実行され、(特にクライアントからの)要求が来るのを待つプロセスまたはプロセスのグループ(一般にデーモンと呼ばれます)です。

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

Systemdは、Linuxのシステムおよびサービスマネージャーです。 SysVおよびLSBinitスクリプトと互換性のあるinitプロセスのドロップイン置換であり、systemctlコマンドはsystemdを管理するための主要なツールです。

このガイドでは、Linuxのsystemdで実行中のすべてのサービスを一覧表示する方法を示します。

LinuxのSystemDで実行中のサービスを一覧表示する

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

# systemctl 

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

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

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

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

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

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

前のコマンドを頻繁に使用する場合は、図のように〜/ .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で実行中のサービスを表示する方法を示しました。また、サービスがリッスンしているポートを確認する方法と、システムファイアウォールで開かれているサービスまたはポートを表示する方法についても説明しました。何か追加したり質問したりしますか?はいの場合は、以下のコメントフォームを使用してご連絡ください。