systemctlは、systemd環境(今どきのLinux)で サービス(デーモン)を管理する コマンドです。nginxやmysqlの起動・停止・自動起動設定など、運用で毎日使うので基本を押さえましょう。
サービスの状態を確認する
systemctl status nginx
active (running) なら起動中、inactive (dead) なら停止中。ログの末尾も表示されるので、障害調査の入口にも使えます。
起動・停止・再起動
systemctl start nginx # 起動
systemctl stop nginx # 停止
systemctl restart nginx # 再起動(停止→起動)
systemctl reload nginx # 設定だけ再読み込み(無停止に近い)
設定変更を反映するとき、restart は一瞬止まりますが、reload は接続を保ったまま設定を読み直せる場合があります(対応サービスのみ)。
自動起動(サーバ再起動後も立ち上げる)
systemctl enable nginx # OS起動時に自動起動する
systemctl disable nginx # 自動起動しない
systemctl is-enabled nginx # 自動起動設定を確認
「サーバを再起動したらサービスが上がってこない」の多くは、enable のし忘れです。構築時に忘れずに設定します。
起動と自動起動を同時に
systemctl enable --now nginx # enable(自動起動)+ start(今すぐ起動)
全体・ログの確認
systemctl list-units --type=service # 稼働中のサービス一覧
systemctl --failed # 失敗しているサービスだけ
journalctl -u nginx --since "10:00" # サービスのログを時刻で
よくあるハマり
- 設定を変えたのに反映されない →
reloadかrestartを忘れている - 再起動で上がらない →
enableしていない - 起動失敗 →
systemctl statusとjournalctl -uでエラー原因を確認
まとめ
systemctlは「start/stop/restart/reload」でサービスを操作し、「enable/disable」で自動起動を制御します。特に enable --now と、状態確認の status、ログの journalctl -u は必修。サービス運用の基本コマンドとして手に馴染ませておきましょう。