systemctlの基本

4つの動詞だけ覚える

サービスを扱うコマンドは systemctl ひとつです。後ろに付ける動詞で意味が決まります。日常で使うのは次の4つです。

systemctl status nginx # いまどうなっているか systemctl start nginx # 動かす systemctl stop nginx # 止める systemctl restart nginx # 止めてから動かす

第1章では start と stop を操作として使いました。ここからは、その内側で何が起きているかを見ます。

status の読みどころは3行

systemctl status nginx は情報を多く出しますが、最初に見る場所は決まっています。

● nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled) Active: active (running) since Fri 2026-08-08 12:01:03 UTC; 5min ago Main PID: 1234 (nginx)

Loaded の行は、どのファイルを設定として読んだかです。自分で unit ファイルを書くようになると、ここで「ちゃんと自分のファイルが読まれているか」を確かめます。

Active の行が生死です。active (running) なら動作中、inactive (dead) なら停止中、failed なら起動に失敗した状態です。うしろの since で、いつからその状態なのかも分かります。予期せず再起動していないかは、ここの時刻で見抜けます。

Main PID は前の回で見た代表プロセスの番号です。

画面を止めずに生死だけ取る

スクリプトの中から生死を判定したいときに、あの長い出力は邪魔です。専用のコマンドがあります。

systemctl is-active nginx # active

activeinactivefailed という単語だけを返します。しかも終了ステータスが、動いていれば 0、そうでなければ 0 以外になります。つまり if の条件にそのまま置けます。

if systemctl is-active --quiet nginx; then echo "動いています" fi

--quiet を付けると単語すら出さず、終了ステータスだけを返します。この形は6章の監視スクリプトでそのまま使います。

restart で番号が変わる

restart は、止めてから改めて起動します。つまりプロセスは作り直されるので、Main PID が別の番号になります。

systemctl show -p MainPID --value nginx # 1234 systemctl restart nginx systemctl show -p MainPID --value nginx # 1987

番号が変わったということは、その瞬間に一度サービスが途切れたということです。動いているサイトに対して安易に restart を打つと、短いあいだ応答できない時間が生まれます。設定を変えただけなら、途切れさせずに読み直させる reload という方法があります。それは3章で扱います。

手を動かす

nginx を止めて、生死の表示が変わることを確かめます。そのあと再起動し、Main PID が変わることを記録に残します。

ヒント

  • 1. systemctl stop nginx のあと systemctl is-active nginx を /root/state-log.txt に書き出す
  • 2. systemctl start nginx のあと systemctl is-active nginx を同じファイルに追記する
  • 3. systemctl show -p MainPID --value nginx を /root/pid-before.txt に保存する
  • 4. systemctl restart nginx のあと、同じ値を /root/pid-after.txt に保存する

5 項目で採点します