Linuxで実行中のサービスを一覧表示する方法:すべてのinitシステムに対応した完全ガイド
クイックアンサー:Linuxで実行中のサービスを一覧表示する方法
Linuxで実行中のサービスを一覧表示するには、使用しているinitシステムに応じて、次のいずれかのコマンドを使います:
- systemd(Ubuntu 24.04、Debian 12、CentOS/RHEL 9、Fedora 40以降、および2026年時点のほとんどの最新ディストリビューション):
または、状態を問わずすべてのサービスユニットを一覧表示するには:systemctl list-units --type=service --state=runningsystemctl --type=service - SysVinit / 古いシステム(またはレガシーなinitスクリプトも含めたい場合):
service --status-all
systemdは、現在ほぼすべての主要なLinuxディストリビューションで標準のinitシステムになっているため、大半のケースではsystemctl list-units --type=service --state=runningが答えになります。このコマンドは、現在アクティブなサービスをLOAD、ACTIVE、SUBの各状態とともに表形式で表示します。systemctlが見つからない場合、そのシステムはsystemdで動いていないので、service --status-all(SysVinit)やrc-status(OpenRC)を使ってください。
このガイドのこの先では、状態によるフィルタリング、起動時に有効なサービスの確認、ポートからのサービスの特定など、各方法を詳しく説明します。
はじめに
Linuxのサービスとは、ネットワークの管理、ユーザーログインの処理、ウェブサーバーの実行といったシステムのタスクをこなすために、常時動き続けるバックグラウンドプロセスのことです。これらのサービスは、使用しているLinuxディストリビューションやinitシステムに応じて、さまざまなツールで管理できます。2026年時点では、ほぼすべての主要なディストリビューションでsystemdが標準のinitシステムとなっているため、このガイドの大部分はsystemctlコマンドを中心に解説します。
実行中のサービスを一覧表示する方法を知っておくことは、システム管理者や開発者にとって欠かせません。次のような場面で役立ちます。
- 問題のトラブルシューティング – 重要なサービスが動作しているか、あるいは失敗していないかを確認する。
- パフォーマンスの監視 – リソースを多く消費しているサービスを特定する。
- セキュリティ監査 – 必要なサービスだけが動作していることを確認する。
systemctlを使う(systemdベースのシステム向け)
最近のLinuxディストリビューションのほとんどは、initシステムとしてsystemdを採用しています。これには、Ubuntu(16.04から24.04 LTS以降)、Debian(8から12「Bookworm」以降)、Fedora(40以降)、CentOS Stream / RHEL / Rocky Linux / AlmaLinux(7から9以降)、openSUSEなど、2026年時点の現行リリースが含まれます。systemctlコマンドは、これらすべてのシステムでサービスを管理し、一覧表示するための中心的なツールです。
個々のサービスの状態を確認する
特定のサービスが動作しているかどうかを確認するには、次のコマンドを使います:
systemctl status <service-name>
たとえば、nginxウェブサーバーが動作しているかを確認するには、次のようにします:
systemctl status nginx
出力では、サービスがアクティブ(実行中)、非アクティブ、失敗のいずれの状態かが表示され、あわせてデバッグに役立つログも確認できます。
アクティブなサービスをすべて一覧表示する
実行中のサービスをすべて一覧表示するには、次のコマンドを使います:
systemctl list-units --type=service --state=running
このコマンドは、現在実行中のすべてのサービスを、その状態とともに表形式で表示します。
すべてのサービスを一覧表示する(非アクティブなものも含む)
実行中かどうかにかかわらず、すべてのサービスを表示したい場合は、次のようにします:
systemctl list-units --type=service
これには、アクティブ、非アクティブ、失敗、その他の状態にあるサービスも含まれます。
状態でサービスを絞り込む
状態を指定してサービスを絞り込むには、次のコマンドを使います:
systemctl list-units --type=service --state=failed
これで失敗したサービスだけが表示されるので、トラブルシューティングに役立ちます。
起動時に有効なサービスを一覧表示する
起動時に自動的に開始されるよう設定されているサービスを確認するには、次のようにします:
systemctl list-unit-files --type=service | grep enabled
出力例
systemctl list-units --type=service --state=runningの典型的な出力は、次のようになります:
UNIT LOAD ACTIVE SUB DESCRIPTION
cron.service loaded active running Regular background program processing daemon
networking.service loaded active running Raise network interfaces
ssh.service loaded active running OpenBSD Secure Shell server
systemd-logind.service loaded active running Login Service
まとめ
- 個々のサービスの状態を確認するには、
systemctl status <service>を使います。 - アクティブなサービスを一覧表示するには、
systemctl list-units --type=service --state=runningを使います。 - すべてのサービスを表示するには、
systemctl list-units --type=serviceを使います。 - 起動時に有効なサービスを表示するには、
systemctl list-unit-files --type=serviceを使います。
psとgrepで実行中のプロセスを一覧表示する
systemctlなどのサービス管理ツールに頼らずに実行中のサービスを一覧表示したい場合は、ps(プロセスステータス)とgrepを組み合わせて、特定のプロセスを見つけることができます。
この方法は、次のような場合に便利です。
systemctlやserviceコマンドがない、最小構成のLinuxシステムで作業しているとき。- initシステムの種類にかかわらず、特定のプロセスが動作しているかを確認したいとき。
実行中のプロセスをすべて一覧表示する
ps auxコマンドは、システム上で実行中のすべてのプロセスを表示します:
ps aux
これにより、実行中のすべてのプロセスの詳細な一覧が表示され、プロセスID(PID)、CPU使用率、メモリ使用率、コマンド名などが確認できます。
特定のサービスを探す
特定のサービスが動作しているかを確認するには、ps aux | grep <service-name>を使います:
ps aux | grep nginx
これにより「nginx」を含む行が出力され、動作しているかどうかがわかります。出力は次のようになります:
root 1034 0.0 0.3 49536 3412 ? Ss 12:34 0:00 nginx: master process /usr/sbin/nginx
www-data 1035 0.0 0.2 49536 2824 ? S 12:34 0:00 nginx: worker process
user 2045 0.0 0.0 14856 900 pts/0 S+ 12:35 0:00 grep --color=auto nginx
この出力について説明します。
- 最初の2行は、nginxサービスが動作していることを示しています。
- 最後の行(
grep --color=auto nginx)は、grepコマンドそのものです。これを除外したい場合は、次のようにします:
ps aux | grep nginx | grep -v grep
プロセスを階層形式で表示する
より整理された形で見たい場合は、次のコマンドを使います:
ps fax
これにより、実行中のプロセスがツリー構造で表示され、どのサービスが動いているか、またその子プロセスが何かを把握しやすくなります。
ポートからサービスを特定する
特定のポートでサービスが動作していると思われるものの、サービス名がわからない場合は、次のコマンドを使います:
netstat -tulnp | grep :80
または、netstatが使えない場合は、次のようにします:
ss -tulnp | grep :80
これにより、ポート80(NginxやApacheなどのウェブサーバーがよく使うポート)を使用しているプロセスが表示されます。
まとめ
- 実行中のすべてのプロセスを一覧表示するには、
ps auxを使います。 - 特定のサービスを確認するには、
ps aux | grep <service-name>を使います。 - プロセスをツリー表示するには、
ps faxを使います。 - 特定のポートで動作しているサービスを見つけるには、
netstat -tulnpまたはss -tulnpを使います。
FAQ(よくある質問)
1. Linuxでサービスが動作しているかどうかを確認するにはどうすればよいですか?
Linuxディストリビューションに応じて、いくつかの方法があります。
- systemdベースのシステムの場合:
systemctl status <service-name> - SysVinitベースのシステムの場合:
service <service-name> status - psとgrepを使う場合:
ps aux | grep <service-name>
2. 実行中のサービスをすべて一覧表示するにはどうすればよいですか?
- systemdベースのシステムの場合:
systemctl list-units --type=service --state=running - SysVinitベースのシステムの場合:
service --status-all psコマンドを使う場合:ps aux
3. サービスが起動時に開始されるかどうかを確認するにはどうすればよいですか?
- systemdの場合:
systemctl is-enabled <service-name> - SysVinit(RHELベースのシステム)の場合:
chkconfig --list <service-name>
4. サービスを再起動するにはどうすればよいですか?
- systemdベースのシステムの場合:
sudo systemctl restart <service-name> - SysVinitベースのシステムの場合:
sudo service <service-name> restart
5. サービスを停止または無効化するにはどうすればよいですか?
- サービスを一時的に停止するには:
sudo systemctl stop <service-name> - 起動時にサービスが開始されないようにするには:
sudo systemctl disable <service-name>
6. 特定のポートを使っているサービスを見つけるにはどうすればよいですか?
特定のポートで動作しているサービスを見つけるには、netstatまたはssを使います:
netstat -tulnp | grep :80
または
ss -tulnp | grep :80
7. systemctlが見つからない場合はどうすればよいですか?
command not found: systemctlのようなエラーが表示された場合、そのシステムはsystemdを使っていない可能性があります。次のコマンドを試してみてください:
service --status-all
または
ps aux | grep <service-name>
8. 失敗したサービスを一覧表示するにはどうすればよいですか?
systemdベースのシステムの場合は、次のコマンドを実行します:
systemctl list-units --type=service --state=failed
9. 特定のサービスのログを確認するにはどうすればよいですか?
systemdで管理されているサービスのログを確認するには、次のコマンドを使います:
journalctl -u <service-name>
ログをリアルタイムで表示するには、次のようにします:
journalctl -u <service-name> -f
10. topやhtopで実行中のサービスを確認できますか?
はい、できます。topやhtopを使うと、実行中のプロセスをリアルタイムで確認できます。
topを使う:tophtopを使う(対話的で扱いやすい):
(インストールされていない場合は、htopsudo apt install htopまたはsudo yum install htopでインストールしてください。)
