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
サービスの状態の確認
サービスの状態を確認するには、以下のコマンドを使用します。たとえば、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.
このコマンドにより、現在のサービスの状態が表示されます。ステータスには、以下のような情報が含まれます。
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
コメント