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
# activeactive か inactive か failed という単語だけを返します。しかも終了ステータスが、動いていれば 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 が変わることを記録に残します。