【保存版】Linuxでサービス一覧を確認する方法|systemd・chkconfig・serviceコマンド徹底解説

Linuxを運用していると、こんなことを知りたくなりませんか?

「今動いているサービスは何?」
「自動起動しているサービスを調べたい」
「サーバーが重いけど、どのサービスが原因?」
「トラブル時に不要なサービスを止めたい」

Linuxでは、バックグラウンドで多くの「サービス」が動いています。

これらのサービスを把握することは、サーバーの安定運用やトラブルシューティングにとても重要です。

この記事では、Linuxでサービスの一覧を確認する方法を、systemd対応のモダンなディストリビューション(Fedora、Ubuntu、CentOS 7以降など)から、古いSysVinit環境まで幅広く紹介します。

「サービス」って何か分からない方でも大丈夫。一つひとつ分かりやすく解説していきます。

スポンサーリンク

サービスって何?なぜ一覧を確認するの?

サービスとは

「サービス」とは、Linuxが起動すると自動的に立ち上がり、バックグラウンドで動き続けるプログラムのことです。

「デーモン」とも呼ばれます。

サービスの例:

  • Apache・Nginx:Webサーバー
  • MySQL・PostgreSQL:データベース
  • SSH:リモートログイン
  • firewalld:ファイアウォール
  • NetworkManager:ネットワーク管理

サービス一覧を確認する目的

目的詳細
サーバーの状態確認必要なサービスが正常に動作しているか確認
セキュリティ強化不要なサービスを無効化してリスクを減らす
パフォーマンス向上重いサービスを特定して最適化
トラブルシューティング問題の原因となるサービスを特定
自動化の準備起動・停止の自動化スクリプトを作成

これらの目的のために、まずは「どんなサービスが動いているか」を知ることから始めましょう。

【systemd対応環境】サービス一覧の確認方法

現在のLinuxディストリビューションの多くはsystemdというシステム管理ツールを使っています。

systemd対応のディストリビューション:

  • Ubuntu 16.04以降
  • CentOS 7以降
  • Fedora(全バージョン)
  • RHEL 7以降
  • Debian 8以降

使用するコマンド:systemctl

systemdではsystemctlコマンドを使ってサービスを管理します。

実行中のサービスを確認する

systemctl list-units --type=service

このコマンドで、現在アクティブ(起動中)なサービス一覧が表示されます。

出力例:

UNIT                     LOAD   ACTIVE SUB     DESCRIPTION
ssh.service              loaded active running OpenBSD Secure Shell server
NetworkManager.service   loaded active running Network Manager
firewalld.service        loaded active running firewalld - dynamic firewall daemon

各項目の意味:

  • UNIT:サービス名
  • LOAD:設定ファイルが読み込まれているか
  • ACTIVE:サービスの状態(active=動作中、inactive=停止)
  • SUB:詳細な状態(running=実行中、exited=終了)
  • DESCRIPTION:サービスの説明

すべてのサービス(有効・無効含む)を表示

systemctl list-unit-files --type=service

このコマンドで、システムにインストールされているすべてのサービスと、それらが自動起動設定されているかどうかが分かります。

出力例:

UNIT FILE                    STATE
ssh.service                  enabled
apache2.service              disabled
mysql.service                enabled
bluetooth.service            disabled

STATEの意味:

  • enabled:システム起動時に自動で起動
  • disabled:手動で起動する必要がある
  • static:他のサービスに依存して起動
  • masked:完全に無効化されている

3. 特定のサービスの詳細状態を確認

systemctl status サービス名

例:

systemctl status sshd

このコマンドで、サービスの詳細情報、最近のログ、稼働状況を確認できます。

サービスの状態別一覧を絞り込む方法

目的に応じて、表示するサービスを絞り込むことができます。

目的コマンド例使用場面
起動中のサービスのみsystemctl list-units --type=service --state=running現在動いているものだけ知りたい
自動起動設定されたサービスsystemctl list-unit-files --type=service --state=enabled起動時に立ち上がるものを確認
無効になっているサービスsystemctl list-unit-files --type=service --state=disabled使っていないサービスを確認
エラー状態のサービスsystemctl list-units --type=service --state=failed問題のあるサービスを特定

これらのコマンドを使い分けることで、効率よく必要な情報を得ることができます。

【旧式環境(SysVinit)】での確認方法

古いLinuxディストリビューション(CentOS 6以前、Ubuntu 14.04以前など)では、SysVinitという古いシステム管理方式を使っています。

起動中のサービスを確認

service --status-all

出力例:

 [ + ]  apache2
 [ - ]  bluetooth
 [ + ]  ssh

記号の意味:

  • [ + ]:起動中
  • [ – ]:停止中
  • [ ? ]:状態不明

個別のサービス状態確認

service サービス名 status

例:

service apache2 status

自動起動サービスの確認

chkconfig --list

このコマンドで、各ランレベルごとの起動設定が表示されます。

出力例:

apache2    0:off  1:off  2:on   3:on   4:on   5:on   6:off
ssh        0:off  1:off  2:on   3:on   4:on   5:on   6:off

ランレベルの意味:

  • 0:システム停止
  • 1:シングルユーザーモード
  • 2-5:マルチユーザーモード
  • 6:再起動

通常は、ランレベル2-5で「on」になっているサービスが自動起動されます。

実用的な使い方の例

Web サーバーが起動しているかチェック

# CentOS系の場合
systemctl status httpd

# Ubuntu系の場合
systemctl status apache2

不要なサービスを見つけて無効化

# 無効になっているサービスを確認
systemctl list-unit-files --type=service --state=disabled

# 特定のサービスを停止して無効化
sudo systemctl stop bluetooth
sudo systemctl disable bluetooth

エラーが出ているサービスを調査

# エラー状態のサービスを表示
systemctl list-units --type=service --state=failed

# 詳細なログを確認
journalctl -u サービス名

よくある質問

Q1. UbuntuとCentOSでコマンドは同じですか?

A. どちらもsystemd採用後(Ubuntu 16.04以降、CentOS 7以降)はsystemctlが標準です。ただし、サービス名が異なる場合があります:

  • Webサーバー:CentOSはhttpd、Ubuntuはapache2
  • SSH:CentOSはsshd、Ubuntuはssh

Q2. サービス名が分からない場合はどうすればいい?

A. 以下の方法で探せます:

# キーワードで検索
systemctl list-unit-files --type=service | grep web
systemctl list-unit-files --type=service | grep sql

Q3. 一時的にサービスを止めて、再起動後も停止させたい

A. 以下の手順で行います:

# 今すぐ停止
sudo systemctl stop サービス名

# 自動起動も無効化
sudo systemctl disable サービス名

Q4. 間違ってサービスを止めてしまった場合は?

A. 以下で再開できます:

# 今すぐ起動
sudo systemctl start サービス名

# 自動起動も有効化
sudo systemctl enable サービス名

Q5. 自分のLinuxがsystemdかSysVinitか分からない

A. 以下のコマンドで確認できます:

# systemdの場合、バージョンが表示される
systemctl --version

# 古いシステムの場合、エラーが出る

まとめ

Linuxでは、サービスの管理と確認がシステム安定性とセキュリティの鍵になります。

特にsystemctlは強力な管理ツールであり、一覧の確認から起動・停止・ログ確認まで一括で操作可能です。

この記事の重要なポイント:

  • systemctl list-units:実行中のサービス確認
  • systemctl list-unit-files:有効・無効の状態を一覧表示
  • 状態別の絞り込みで効率よく情報収集
  • servicechkconfigは旧システム向け
  • 状態確認・無効化でサーバーを安全に運用

コメント

タイトルとURLをコピーしました