## はじめに
サーバーの再起動はインフラ運用の基本動作ですが、意外と「コマンドを打ち間違えて即座に落としてしまった」「ユーザーに告知せずに止めた」というトラブルが起こりがちな領域でもあります。Linuxには`shutdown`、`reboot`、`halt`、`poweroff`、そして近年標準化された`systemctl`コマンドなど、複数の停止系コマンドがあり、それぞれ役割と推奨される使い方が異なります。
時間予約・取消し・ログインユーザーへの通知など、本番運用で必要となる機能は`shutdown`に集約されています。systemd環境では多くが`systemctl`のエイリアスとして動作するため、内部的には同一処理に行き着きます。
本記事では、安全な停止/再起動のための実用テクニックを整理します。
## 症状・背景
– 緊急再起動と計画停止でコマンドを使い分けたい
– 30分後に再起動」のように時間予約したい
– 再起動予定をログインユーザーに通知したい
– 予約済みのシャットダウンを取り消したい
## 手順・設定方法
### ステップ1: 即時シャットダウンと再起動
緊急時に使うシンプルなコマンドです。
“`bash
# 即時シャットダウン(now = +0 と同じ)
sudo shutdown -h now
# 即時再起動
sudo shutdown -r now
# rebootコマンドでも同じ
sudo reboot
# 電源OFF
sudo poweroff
“`
### ステップ2: 時間予約とメッセージ通知
計画停止は事前告知が必須です。
“`bash
# 10分後に再起動、ユーザーに通知
sudo shutdown -r +10 “システムメンテナンスのため再起動します”
# 22:30に停止
sudo shutdown -h 22:30 “夢間メンテナンス開始”
# 単独でユーザーにメッセージを送る(停止しない)
sudo shutdown -k +5 “5分後に再起動予定です(テスト通知)”
# wall でも全ユーザーに告知可能
echo “10分後にメンテします” | sudo wall
“`
### ステップ3: 予約のキャンセル
取り消しの手順を覚えておきます。
“`bash
# 進行中のシャットダウン予約を取消
sudo shutdown -c
# 取消メッセージ付きでキャンセル
sudo shutdown -c “メンテナンスは延期になりました”
# 予約状況を確認(一部環境)
ls -la /run/nologin /run/systemd/shutdown/ 2>/dev/null
“`
### ステップ4: systemctlによる停止系
systemd環境ではこちらが内部実装です。
“`bash
# 再起動
sudo systemctl reboot
# 電源OFF
sudo systemctl poweroff
# ハードリセット相当(システム停止のみ、電源は切らない)
sudo systemctl halt
# レスキューモード(シングルユーザー)
sudo systemctl rescue
# 緊急モードへ
sudo systemctl emergency
“`
## 注意事項
– 本番環境ではログインユーザーへの告知(`shutdown -r +N “msg”`)を徹底する
– リモートサーバーでの`halt`は再起動できなくなる可能性があるため`reboot`の方が安全
– データベースなど停止順序が重要なサービスは事前に`systemctl stop`を実行
– 自動マウントされたNFSなどは停止前にアンマウントしておく
## まとめ
1. **緊急時**: `sudo reboot` または `sudo shutdown -r now`
2. **計画停止**: `shutdown -r +10 “理由”` で告知付き予約
3. **キャンセル**: `shutdown -c` で取消、メッセージ追加可
4. **systemctl**: 内部実装はこちら、結果は同じ
5. **告知文化**: wall・shutdown引数のメッセージで運用品質 UP
関連記事:
– [systemctlでサービスを管理する方法](/articles/linux-systemctl-service/)
– [Linuxの起動プロセスとブート設定](/articles/linux-boot-process/)
– [サーバーの定期メンテナンス手順](/articles/linux-server-maintenance/)






