Linuxシステムは、さまざまなシステムサービス(プロセス管理、ログイン、syslog、cronなど)とネットワークサービス(リモートログイン、電子メール、プリンター、Webホスティング、データストレージ、ファイル転送、ドメイン名解決(DNSを使用)、動的IPアドレス割り当て(DHCPを使用)など。
技術的には、サービスは、バックグラウンドで継続的に実行され、(特にクライアントからの)要求が来るのを待つプロセスまたはプロセスのグループ(一般にデーモンと呼ばれます)です。
Linuxは、さまざまな管理方法(開始、停止、通常、プロセスまたはサービスマネージャを介して、サービスを再起動し、システム起動時に自動起動を有効にします。すべてではないにしてもほとんどの最新のLinuxディストリビューションが同じプロセスマネージャーを使用するようになりました:systemd。
関連項目:「init」と「systemd」の裏話:「init」を「systemd」に置き換える必要がある理由Linux
Systemdは、Linuxのシステムおよびサービスマネージャーです。 SysVおよびLSBinitスクリプトと互換性のあるinitプロセスのドロップイン置換であり、systemctlコマンドはsystemdを管理するための主要なツールです。
このガイドでは、Linuxのsystemdで実行中のすべてのサービスを一覧表示する方法を示します。
SystemDで実行中のサービスを一覧表示するLinux
引数なしでsystemctlコマンドを実行すると、サービスを含むすべてのロードされたsystemdユニットのリストが表示され(systemdユニットの詳細については、systemdのドキュメントを参照)、ステータス(アクティブかどうか)が示されます。
# systemctl
システムにロードされているすべてのサービスを一覧表示するには(アクティブ、実行中、終了、失敗のいずれの場合でも、list-unitsサブコマンドと
サービスの値を持つスイッチ。
# systemctl list-units --type=serviceOR# systemctl --type=service
また、実行中のサービスと終了したサービスの両方で、ロードされているがアクティブなすべてのサービスを一覧表示するには、値を指定して--state
オプションを追加できます。
# systemctl list-units --type=service --state=activeOR# 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_agentdOR# ss -ltup | grep zabbix_agentd
5番目の列はソケットを示しています:ローカルアドレス:ポート。この場合、プロセスzabbix_agentdはポート10050でリッスンしています。
また、サーバーでファイアウォールサービスが実行されている場合は、選択したサービスまたはポートとの間のトラフィックをブロックまたは許可する方法については、以下に示すように、firewall-cmdまたはufwコマンド(使用しているLinuxディストリビューションに応じて)を使用して、ファイアウォールで開かれたサービスまたはポートを一覧表示できます。
# firewall-cmd --list-services # firewall-cmd --list-ports$ sudo ufw status