「他のユーザーがログインしている状態で、いきなり再起動して大丈夫?」
サーバーの停止・再起動は、操作を間違えるとデータ破損やサービス障害に直結する、責任の重い作業です。
この記事では、Linuxの
shutdown(シャットダウン) と reboot(リブート) コマンドの実践的な使い方を解説します。時間指定やwall通知、shutdown -c によるキャンセル、systemctl poweroff / systemctl reboot との使い分け、本番サーバーでの安全な停止手順まで、現場で必要な知識をまとめました。
shutdownコマンドとは?(システムを安全に停止・再起動する)
shutdown は、Linuxシステムを安全にシャットダウン(停止)または再起動するためのコマンドです。単にシステムを停止するだけでなく、以下の処理を順序立てて実行します。
・ログイン中の全ユーザーに通知メッセージ(wall)を送信する
・新規ログインをブロックする(/etc/nologin が作成される)
・実行中のプロセスに終了シグナル(SIGTERM → SIGKILL)を送る
・ファイルシステムをアンマウントして同期する
Linuxはマルチユーザー環境なので、他のユーザーがログインして作業している可能性があります。
shutdown を使えば、事前に通知を送ってから安全にシステムを停止できるため、本番サーバーでは shutdown を使うのが基本です。※ shutdown コマンドの実行には root 権限(sudo)が必要です。
基本的な使い方(シャットダウンと再起動)
1. 今すぐシャットダウンする(shutdown -h now)
最も基本的な使い方です。-h(halt)は「システムを停止する」という意味で、now は「今すぐ」を指定しています。# 今すぐシステムをシャットダウンする $ sudo shutdown -h now
2. 今すぐ再起動する(shutdown -r now)
-r(reboot)オプションを使うと、システムを停止した後に自動的に再起動します。# 今すぐシステムを再起動する $ sudo shutdown -r now
3. 時間を指定してシャットダウンする
shutdown の最大の特長は、時間を指定して実行できることです。時間の指定方法は2種類あります。・+分数:指定した分数後に実行する(例:+5 で5分後)
・HH:MM:指定した時刻に実行する(例:23:00 で23時ちょうど)
# 5分後にシャットダウンする $ sudo shutdown -h +5 # 23時にシャットダウンする $ sudo shutdown -h 23:00 # 10分後に再起動する $ sudo shutdown -r +10
4. 通知メッセージを添えてシャットダウンする
時間指定の後にメッセージを追加すると、wallメッセージに含めることができます。# メッセージ付きで5分後にシャットダウンする $ sudo shutdown -h +5 "カーネルアップデートのため、5分後にサーバーを停止します" # ログイン中のユーザーの端末に以下のように表示される Broadcast message from root@server01 (Wed Mar 19 14:55:00 2026): カーネルアップデートのため、5分後にサーバーを停止します The system is going down for poweroff at Wed 2026-03-19 15:00:00 JST!
5. 予約済みのシャットダウンをキャンセルする(shutdown -c)
時間指定でシャットダウンを予約した後、shutdown -c で取り消すことができます。# 予約済みのシャットダウンをキャンセルする $ sudo shutdown -c # メッセージ付きでキャンセルする $ sudo shutdown -c "メンテナンス延期のため、シャットダウンを取り消します"
-c(cancel)を実行すると、ログイン中のユーザーにキャンセルの通知も送信されます。「急にシャットダウンを予約してしまったが、まだ作業中のユーザーがいた」という場面で使ってください。rebootコマンドとの違い
reboot コマンドは、引数なしでシステムを即座に再起動するシンプルなコマンドです。# システムを即座に再起動する $ sudo reboot
shutdown -r now と reboot はどちらもシステムを再起動しますが、以下の違いがあります。・shutdown -r now:wallメッセージの送信、新規ログインのブロック、時間指定やキャンセルが可能
・reboot:即座に再起動する。時間指定やメッセージ送信の機能はない
開発環境やテスト環境では
reboot で手早く再起動するのが便利ですが、本番サーバーでは必ず shutdown -r を使い、ユーザーへの通知と猶予時間を確保してください。同様に、シャットダウンにも
poweroff / halt というコマンドがあります。# 即座にシステムを停止する(shutdown -h now と同等) $ sudo poweroff # システムを停止する(電源はオフにしない場合がある) $ sudo halt
halt は環境によって電源を完全にオフにしないことがあります。確実に電源を切りたい場合は poweroff または shutdown -h を使ってください。systemctl poweroff / systemctl reboot(systemd環境)
RHEL 7 / CentOS 7 以降の systemd 環境では、systemctl コマンドでもシャットダウン・再起動が可能です。# systemctl でシャットダウンする $ sudo systemctl poweroff # systemctl で再起動する $ sudo systemctl reboot
shutdown / reboot / poweroff は内部的に systemctl を呼び出しています。どのコマンドを使っても最終的な動作は同じです。ただし、
shutdown コマンドには時間指定・メッセージ送信・キャンセルといった機能があるため、本番環境では shutdown を使うメリットが大きいです。本番サーバーでの安全なシャットダウン手順
開発環境ならreboot 一発で問題ありませんが、本番サーバーでは以下の手順を踏むことで、事故を防ぐことができます。1. ログイン中のユーザーを確認する(who / w)
まず、他にログインしているユーザーがいないか確認します。# ログイン中のユーザーを確認する $ who tanaka pts/0 2026-03-19 10:00 (192.168.1.100) suzuki pts/1 2026-03-19 13:30 (192.168.1.101) # w コマンドならユーザーが何をしているかも確認できる $ w 14:55:00 up 120 days, 3:00, 2 users, load average: 0.10, 0.05, 0.01 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT tanaka pts/0 192.168.1.100 10:00 4:55m 0.05s 0.01s vim config.yml suzuki pts/1 192.168.1.101 13:30 1:25m 0.02s 0.02s -bash
2. wallコマンドで事前通知する
ログイン中のユーザーがいる場合は、wall(Write ALL)コマンドで全員にメッセージを送ります。# ログイン中の全ユーザーにメッセージを送る $ wall "10分後にカーネルアップデートのためサーバーを再起動します。作業を保存してログアウトしてください。"
3. 時間指定でシャットダウンを予約する
通知を送ったら、猶予時間を設けてシャットダウンを予約します。# 10分後にシャットダウンする(メッセージ付き) $ sudo shutdown -r +10 "カーネルアップデートのため再起動します"
4. sync でディスクを同期する(任意)
shutdown コマンドは内部で sync(ディスクバッファの書き出し)を実行しますが、念のため手動で実行しておくと安心です。# メモリ上のデータをディスクに書き出す $ sync
sync はファイルシステムのバッファ(メモリに溜まっている書き込みデータ)を強制的にディスクへ反映させるコマンドです。通常は shutdown が自動で行いますが、万が一に備えて実行しておくと安全です。「shutdown が効かない」時の対処法
1. Permission denied / Must be root と表示される
shutdown は root 権限が必要です。一般ユーザーで実行するとエラーになります。# 一般ユーザーで実行するとエラーになる $ shutdown -h now Failed to power off system via logind: Interactive authentication required. # sudo を付けて実行する $ sudo shutdown -h now
2. shutdown -c でキャンセルできない
shutdown -c は、時間指定で予約されたシャットダウンのみキャンセルできます。shutdown -h now のように即時実行を指定した場合は、キャンセルする猶予がありません。本番サーバーでは
now ではなく +1(1分後)以上の時間を指定する習慣をつけておくと、万が一の誤操作時にキャンセルできます。3. リモートからシャットダウン後、サーバーに接続できない
SSH 経由でリモートのサーバーをシャットダウンした場合、電源が切れた状態なのでSSHでは再起動できません。対処法は以下のとおりです。・IPMI / iLO / iDRAC:物理サーバーのリモート管理インターフェースで電源をオンにする
・クラウド(AWS / Azure等):管理コンソールからインスタンスを起動する
・データセンター:現地スタッフに電源投入を依頼する
リモートで作業する場合は、シャットダウン(-h)ではなく再起動(-r)を使うのが鉄則です。シャットダウンしてしまうと、物理的に電源を入れ直す必要があるためです。
shutdownコマンドの主なオプション一覧
・-h:システムを停止する(halt / poweroff)・-r:システムを再起動する(reboot)
・-c:予約済みのシャットダウンをキャンセルする
・-k:実際にはシャットダウンせず、wallメッセージだけを送信する(テスト用)
・now:今すぐ実行する
・+分数:指定した分数後に実行する
・HH:MM:指定した時刻に実行する
本記事のまとめ(shutdown / reboot コマンド早見表)
| やりたいこと | コマンド |
|---|---|
| 今すぐシャットダウンする | sudo shutdown -h now |
| 今すぐ再起動する | sudo shutdown -r now |
| 5分後にシャットダウンする | sudo shutdown -h +5 |
| 指定時刻にシャットダウンする | sudo shutdown -h 23:00 |
| メッセージ付きでシャットダウンする | sudo shutdown -h +5 "メッセージ" |
| 予約をキャンセルする | sudo shutdown -c |
| rebootで即座に再起動する | sudo reboot |
| systemctlでシャットダウンする | sudo systemctl poweroff |
| systemctlで再起動する | sudo systemctl reboot |
| ログイン中のユーザーを確認する | who |
| 全ユーザーにメッセージを送る | wall "メッセージ" |
シャットダウンや再起動の手順に、自信を持てていますか?
shutdownコマンドは基本中の基本ですが、本番サーバーの運用では「事前確認 → 通知 → 安全な停止」という一連の手順を体系的に身につけることが重要です。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。
「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
登録10秒/自動返信でDL/合わなければ解除3秒
