【Ubuntu】systemctl の基本:status / start / restart / enable(障害対応の型)

systemctl の基本 - サービス管理の障害対応

この記事で解決できること

  • Ubuntuでサービス(Nginx/Apache/SSHなど)を systemctl で操作できるようになります
  • 「動かない」「再起動したい」「自動起動したい」を最短で切り分けできます
  • 障害対応でよく使う"定番の型"が身につきます

結論(最短)

まずはこれだけ覚えれば現場で困りません。

  • 状態確認:systemctl status <service>
  • 起動:systemctl start <service>
  • 停止:systemctl stop <service>
  • 再起動:systemctl restart <service>
  • 設定を読み直して再起動:systemctl reload <service>(対応していれば)
  • 自動起動ON:systemctl enable <service>
  • 自動起動OFF:systemctl disable <service>

Ubuntuでは多くの場合、管理者権限が必要なので sudo を付けます。

目次

  1. systemctl とは?
  2. まずは「状態確認」から(status)
  3. 起動・停止・再起動(start/stop/restart)
  4. reload / reload-or-restart
  5. 自動起動(enable/disable)
  6. "動かない"ときの定番手順
  7. サービス名が分からない時
  8. よくあるつまずき

前提(対象環境)

  • OS:Ubuntu
  • systemd を使用している環境
  • 権限:sudo が使える想定

1. systemctl とは?

systemctl は systemd のサービス管理コマンドです。
サーバ上で動いているサービス(例:nginx, apache2, ssh, docker など)を、起動/停止/再起動/状態確認できます。

2. まずは「状態確認」から(status)

障害対応はまずここから始めます。

$ sudo systemctl status nginx

よく見るポイント:

  • Active: active (running) → 動いている
  • Active: inactive (dead) → 止まっている
  • Active: failed → 失敗している(原因調査が必要)

failed の場合は、後述の journalctl -u でログを見るのが最短です。

3. 起動・停止・再起動(start/stop/restart)

3-1. 起動

$ sudo systemctl start nginx

3-2. 停止

$ sudo systemctl stop nginx

3-3. 再起動

$ sudo systemctl restart nginx

設定を直した後は基本 restart
reload対応なら reload で"落とさずに"反映できる場合もあります。

4. reload / reload-or-restart(設定反映の扱い)

4-1. reload(対応しているサービスのみ)

$ sudo systemctl reload nginx

4-2. reload-or-restart(迷うならこれが安全)

$ sudo systemctl reload-or-restart nginx
  • reload対応なら reload
  • 対応していなければ restart

5. 自動起動(enable/disable)※新人が詰まりやすいポイント

「今は動いてるけど、再起動したら落ちる」問題はここです。

5-1. 自動起動をON

$ sudo systemctl enable nginx

5-2. 自動起動をOFF

$ sudo systemctl disable nginx

5-3. 自動起動状態を確認

$ systemctl is-enabled nginx

出力例:

  • enabled:自動起動ON
  • disabled:自動起動OFF

6. "動かない"ときの定番手順(障害対応の型)

6-1. statusで状態確認

$ sudo systemctl status nginx

6-2. failedならログを見る(これが最短)

$ sudo journalctl -u nginx -n 200

リアルタイム追跡:

$ sudo journalctl -u nginx -f

6-3. 設定ミスの可能性が高いなら(例:nginx)

サービス固有の構文チェックがある場合は先に実行:

$ sudo nginx -t

設定が壊れている状態で restart すると、止まったままになることがあります。
まずは構文チェック → OKなら restart が安全です。

7. サービス名(unit名)が分からない時

サービス名は環境で微妙に違います(例:Ubuntuだと Apache は apache2 が多い)。

一覧から探す:

$ systemctl list-units --type=service | grep -i apache

全部表示(多いので注意):

$ systemctl list-units --type=service

8. よくあるつまずき

8-1. statusは「起動してるのに」アクセスできない

サービスが起動していても、ポート待受やFW、アプリ側エラーで繋がらないことがあります。
「ポート疎通(ss/lsof/nc/curl)」とセットで切り分けると早いです。

8-2. enableしたのに起動してない

enable は「次回起動時に自動起動する設定」です。
今すぐ起動したいなら start も必要です。

$ sudo systemctl enable nginx
$ sudo systemctl start nginx

まとめ(コピペ用)

# 状態確認
sudo systemctl status <service>

# 起動/停止/再起動
sudo systemctl start <service>
sudo systemctl stop <service>
sudo systemctl restart <service>

# 設定反映(対応していれば)
sudo systemctl reload <service>
sudo systemctl reload-or-restart <service>

# 自動起動
sudo systemctl enable <service>
sudo systemctl disable <service>
systemctl is-enabled <service>

# ログ
sudo journalctl -u <service> -n 200
sudo journalctl -u <service> -f

検証環境

本記事のコマンドは Ubuntu 24.04 LTS / bash 5.2 で動作確認済みです。

次に読む