前の記事では、
psやtopでプロセスを確認し、
killでプロセスへ終了シグナルを送る方法を学習しました。
では、WebサーバやSSHサーバなど、 Linux上で継続的に動作するサービスを 起動・停止したい場合はどうすればよいのでしょうか。
たとえばnginxを停止するときに、 毎回PIDを調べてkillするのは効率的ではありません。
SSHサービスを再起動したい。
OS起動時にサービスを自動起動させたい。
こうしたサービス管理に利用する代表的なコマンドが、 systemctlです。
この記事はLinux中級講座の一部です。 systemdとsystemctlの基本を理解し、 Linuxサービスを管理する方法を学習します。
Linux中級講座を見る →
Linuxのsystemd・サービス・unitの基本を理解し、
systemctl status・start・
stop・restart・
enable・disableを使って
サービスを管理できる状態を目指します。
Linuxの「サービス」とは?
Linuxでは、 バックグラウンドで継続的に動作するプログラムを サービスとして管理することがあります。
代表的なものには次のようなサービスがあります。
Webページを配信する
SSH接続を受け付ける
MySQLを動作させる
定期実行処理を管理する
これらは内部的にはプロセスとして動作していますが、 運用ではサービス単位で管理することが多くなります。
プロセスとサービスの違い
Linux上で実際に動いている 個々のプログラムや処理。
ps aux
WebサーバやSSHなど、 OSによって管理されるサービス。
systemctl
nginxというサービスを起動すると、 実際にはnginxのプロセスが作成されます。 systemctlは、そのサービスを管理するための入口だと考えると分かりやすいです。
systemdとは?
現在の多くのLinuxディストリビューションでは、 サービスやシステムの起動処理を systemdが管理しています。
ユーザは
systemctlを使ってsystemdへ指示を出し、
systemdがサービスを管理します。
systemdでは「unit」という単位で管理する
systemdでは、 サービスなどの管理対象を unit(ユニット)と呼びます。
たとえばnginxの場合、
nginx.service
というservice unitとして管理されます。
.service
サービス
.socket
ソケット
.timer
タイマー
.mount
マウント
今回の記事では、 主に.serviceを扱います。
多くの場合、
systemctl status nginx
のように.serviceを省略して指定できます。
systemctl status:サービスの状態を確認する
まず最も重要なのが、 サービスの状態を確認する statusです。
systemctl status nginx
$ systemctl status nginx
● nginx.service - The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled)
Active: active (running) since Wed 2026-08-19 10:15:02 JST
Main PID: 1250 (nginx)
Tasks: 3
Memory: 8.5M
ここでは特に、 Loaded・Active・Main PIDを確認します。
unitファイルを読み込めている
サービスが動作中
主要プロセスのPID
Activeの表示を理解しよう
statusで特に重要なのが Activeの行です。
active (running)
サービスが実行中
inactive (dead)
停止している
failed
起動失敗などで異常状態
activating
起動処理中
systemctl start:サービスを起動する
停止しているサービスを起動するときは、 startを使います。
sudo systemctl start nginx
$ sudo systemctl start nginx
$ systemctl status nginx
Active: active (running)
systemctl stop:サービスを停止する
動作中のサービスを停止するときは、 stopを使います。
sudo systemctl stop nginx
サービス停止後は、 statusで状態を確認しましょう。
$ sudo systemctl stop nginx
$ systemctl status nginx
Active: inactive (dead)
systemctl restart:サービスを再起動する
サービスを一度停止してから再び起動したい場合は、 restartを利用します。
sudo systemctl restart nginx
設定変更後にサービスを再起動するといった場面でよく利用します。
restartとreloadの違い
サービスによっては、 reloadを利用できる場合があります。
sudo systemctl reload nginx
サービスを停止してから 再び起動する。
サービスを完全停止せず、 設定を読み直せる場合がある。
reloadの動作はサービスによって異なります。 対象サービスがreloadに対応しているか確認して利用しましょう。
systemctl enable:OS起動時にサービスを自動起動する
ここは初学者が混乱しやすい重要ポイントです。
startは、 「今この瞬間にサービスを起動する」コマンドです。
一方、 enableは 「OS起動時に自動的にサービスを起動する設定」 を行います。
sudo systemctl enable nginx
systemctl start nginx
systemctl enable nginx
enableしただけでは、 現在停止しているサービスが必ずその場で起動するわけではありません。
enable –nowで自動起動設定と起動を同時に行える
現在のサービス起動と
自動起動設定を同時に行いたい場合は、
--nowを利用できます。
sudo systemctl enable --now nginx
enable
+
start
systemctl disable:自動起動を無効にする
OS起動時の自動起動を無効にするときは、 disableを利用します。
sudo systemctl disable nginx
disableは自動起動設定を無効にする操作です。
現在のサービスを停止したい場合は
systemctl stopを利用します。
自動起動設定を確認する
サービスが自動起動する設定になっているかは、 is-enabledで確認できます。
systemctl is-enabled nginx
$ systemctl is-enabled nginx
enabled
代表的には、
と判断できます。
is-activeで動作中かを簡単に確認する
詳細なstatus表示が不要で、 単純にサービスが動いているかを確認したい場合は is-activeも便利です。
systemctl is-active nginx
$ systemctl is-active nginx
active
systemctlの基本コマンドを整理しよう
systemctl status nginx
状態確認
systemctl start nginx
起動
systemctl stop nginx
停止
systemctl restart nginx
再起動
systemctl reload nginx
設定再読み込み
systemctl enable nginx
自動起動を有効化
systemctl disable nginx
自動起動を無効化
systemctl is-active nginx
現在動作中か確認
systemctl is-enabled nginx
自動起動設定を確認
killとsystemctlはどう使い分ける?
前の記事で学習したkillと、 今回のsystemctlは役割が異なります。
kill 1250
PIDなどを指定して、 個々のプロセスへシグナルを送る。
systemctl stop nginx
systemd配下のサービスとして 起動・停止・再起動などを行う。
systemdが管理しているサービスを停止したい場合は、 基本的にsystemctlを利用します。 単純に関連プロセスをkillするのではなく、 サービス管理の仕組みに沿って操作することが重要です。
実務でよくあるサービス障害の確認手順
たとえば、 Webページへアクセスできなくなったとします。
nginxが動いているLinuxサーバなら、 まずサービス状態を確認できます。
systemctl status nginx
Active: failed
ログを確認
systemctl restart nginx
設定ファイルの誤りやポート競合などが原因の場合、 再起動しても再び失敗します。 状態やログを確認して原因を切り分けましょう。
サービスがfailedになったら何を見る?
systemctl statusを実行して、 次のように表示されることがあります。
$ systemctl status nginx
● nginx.service - The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled)
Active: failed (Result: exit-code)
Process: 3210 ExecStart=/usr/sbin/nginx
Main PID: 3210 (code=exited, status=1/FAILURE)
この状態では、 「起動に失敗した」ということは分かりますが、 なぜ失敗したのかまでは十分に分からない場合があります。
そこで重要になるのが、 systemdのログです。
ここで実際に試してみよう:systemctlサービス管理シミュレーター
疑似Linux環境で、 nginxサービスを実際に起動・停止・再起動してみましょう。
systemd Service Manager
サービス状態を確認してみましょう
status → stop → status → start → status の順に試すと、 状態変化が分かりやすくなります。
理解度チェック:startとenableを使い分けよう
しかし、Linuxを再起動した後も nginxが自動的に起動するよう設定したい。
適切なコマンドはどれでしょうか?
「今起動する」のか、「次回OS起動時にも起動する」のかを考えてみましょう。
確認問題:systemctlの基本を確認しよう
nginxサービスの現在の状態を確認するコマンドはどれですか?
statusを使うと、 サービスのActive状態やMain PIDなどを確認できます。
nginxサービスを再起動するコマンドはどれですか?
restartはサービスを停止してから再び起動する操作です。
「systemctl disable nginx」の説明として正しいものはどれですか?
disableは自動起動設定を無効化します。 現在動いているサービスを停止する操作とは別です。
3問に挑戦してみましょう。
まとめ
現在の多くのLinuxでは、 systemdがサービスを管理している
systemctl statusで
サービスの状態を確認できる
start・stop・restartで
サービスを起動・停止・再起動できる
enable・disableは
OS起動時の自動起動設定を管理する
サービスがfailedになった場合は、 statusだけでなくログを確認して原因を調査する ことが重要
次は「journalctlでsystemdのログを確認する」を学びましょう
systemctlを使って サービスの状態・起動・停止・再起動を管理できるようになりました。
次は、サービスが failedになった原因や起動時のエラーを どのように調査するのかを学習します。
次の記事では、 journalctlを使って systemdが管理するログを確認し、 特定サービスのログや直近のエラーを絞り込む方法を学びます。
journalctlでsystemdのログを確認する →
