当サイトはアフィリエイトプログラムによる収益を得ています。

Linuxシステムサービスの管理

アイキャッチ画像 IT勉強部屋

Linuxのシステムサービスの管理は、サーバーやデスクトップ環境を円滑に動かすために重要なスキルです。Linuxには数多くのサービス(デーモン)がバックグラウンドで実行されており、これらのサービスを適切に管理することがシステム管理者の役割の一つです。本記事では、systemctlコマンドを使ったサービスの管理方法について説明します。

systemctlとは?

systemctlは、Linuxの初期化システムであるsystemdを操作するためのツールです。systemdは、システムの起動プロセスやサービスの管理、デーモンの実行をコントロールする重要な機能を持っています。systemctlを使うことで、サービスの起動・停止、ステータス確認、再起動、さらには起動時の自動実行の設定などを行うことができます。

ユニット(Unit)とは?

systemctlが操作する「ユニット」は、systemdで管理されるオブジェクトの一つで、サービスやマウントポイント、タイマーなどを定義します。主なユニットタイプには以下のものがあります。

  • Serviceユニット(.serviceファイル): デーモンやサービスを定義します。たとえば、WebサーバーのApacheはhttpd.serviceとして管理されます。
  • Socketユニット(.socketファイル): ソケットのリッスン状態を管理します。例えば、sshd.socketはSSHデーモンに接続するためのソケットです。
  • Targetユニット(.targetファイル): 複数のユニットをグループ化するためのものです。システムの特定の状態を定義する際に使用されます。

これらのユニットファイルは、通常/etc/systemd/system/lib/systemd/systemに格納されており、個々のサービスの挙動を制御する設定が記述されています。

例えば、以下のコマンドで現在ロードされているすべてのサービスユニットを一覧表示します。

$ sudo systemctl list-units --type=service
UNIT                                LOAD   ACTIVE SUB     DESCRIPTION
dbus.service                        loaded active running D-Bus System Message Bus
getty@tty1.service                  loaded active running Getty on tty1
httpd.service                       loaded active running The Apache HTTP Server
irqbalance.service                  loaded active running irqbalance daemon
kmod-static-nodes.service           loaded active exited  Create list of static device nodes for the current kernel
network.service                     loaded active exited  LSB: Bring up/down networking
polkit.service                      loaded active running Authorization Manager
rsyslog.service                     loaded active running System Logging Service
sshd.service                        loaded active running OpenSSH server daemon
各列の説明
  • UNIT: サービスユニット名。通常は「*.service」という形式で表示されます。
  • LOAD: ユニットファイルがロードされているかどうかを示します。loadedはユニットが正しく読み込まれていることを意味します。
  • ACTIVE: サービスの全体的な状態です。activeは現在アクティブであることを示します。
  • SUB: サービスの具体的な状態を示します。runningexitedなどが表示されます。
  • DESCRIPTION: サービスの簡単な説明です。

サービスの状態の確認

サービスの状態を確認するには、以下のコマンドを使用します。たとえば、Webサーバであるhttpdのサービスの状態を確認したい場合は次のように入力します。

$ sudo sudo systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2024-10-14 10:00:45 JST; 3min 30s ago
     Docs: man:httpd.service(8)
 Main PID: 1234 (httpd)
    Tasks: 213 (limit: 512)
   Memory: 20.5M
   CGroup: /system.slice/httpd.service
           ├─1234 /usr/sbin/httpd -k start
           ├─1235 /usr/sbin/httpd -k start
           ├─1236 /usr/sbin/httpd -k start
           └─1237 /usr/sbin/httpd -k start

Oct 14 10:00:45 yourhostname systemd[1]: Starting The Apache HTTP Server...
Oct 14 10:00:45 yourhostname systemd[1]: Started The Apache HTTP Server.

このコマンドにより、現在のサービスの状態が表示されます。ステータスには、以下のような情報が含まれます。

フィールド情報
  • Loaded: サービスの設定ファイルが正しくロードされているかどうか。
  • Active: サービスが正常に動作しているか、停止しているかを示します。
  • Docs: サービスに関する詳細情報の参照先
  • Main PID: サービスを実行しているプロセスのID。
  • Status: サービスに関する詳細情報
  • Process: 関連プロセスの詳細情報
  • CGroup: 関連制御グループの詳細情報
ぼく
ぼく

Active: active (running)という表示があれば、サービスが正常に稼働していることを意味するよ。

systemctlコマンドの基本的な使い方

サービスの起動

サービスを起動するには、以下のコマンドを使います。たとえば、Webサーバであるhttpdのサービスを起動する場合は、次のコマンドを実行します。

$ sudo systemctl start httpd

これでApacheがバックグラウンドで実行され、ユーザーはWebページにアクセスできるようになります。

サービスの停止

同様に、サービスを停止したい場合はstopを使います。

$ sudo systemctl stop httpd

サービスの再起動

サービスの設定を変更した場合や、動作がおかしくなった場合には再起動を行うことが推奨されます。再起動は、次のコマンドで実行できます。

$ sudo systemctl restart httpd

サービスの自動起動設定

Linuxでは、システム起動時に自動で特定のサービスを開始するように設定できます。これには、以下のコマンドを使います。

$ sudo systemctl enable httpd

逆に、自動起動を無効にしたい場合は、disableコマンドを使います。

$ sudo systemctl disable httpd
この記事を書いた人
いわた

某大手外資系IT企業にて約10年ほどITエンジニアとして働いております。30代男性、都内在住。
いつレイオフされてもいいように、2024年5月よりブログを開始。
いつかは副業がサラリーマンですと言いたい。

スキル:インフラ周り/クラウド/Linux/YESマン
趣味:健康/プロ野球/ゲーム(パワプロ)

パワプロのオタクもしてます。

いわたをフォローする
IT勉強部屋

コメント

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