「他のユーザーがログインしている状態で、いきなり再起動して大丈夫?」
サーバーの停止・再起動は、操作を間違えるとデータ破損やサービス障害に直結する、責任の重い作業です。
この記事では、Linuxの
shutdown(シャットダウン) と reboot(リブート) コマンドの実践的な使い方を解説します。時間指定やwall通知、shutdown -c によるキャンセル、systemctl poweroff / systemctl reboot との使い分け、本番サーバーでの安全な停止手順まで、現場で必要な知識をまとめました。
・shutdown -h nowで即時シャットダウン、-r nowで即時再起動できる
・shutdown +分数またはHH:MMで時刻指定し、shutdown -cでキャンセルできる
・本番サーバーでは who確認→メッセージ通知→時刻指定の手順が鉄則
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
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:指定した時刻に実行する
`sudo shutdown -h now` の内部動作|SIGTERM → SIGKILL の順で何が起きているか
「sudo shutdown h now」で辿り着く方は、コマンドを打った瞬間にサーバーの中で何が走っているかを把握したい段階だと思います。sudo shutdown -h now は単に電源を落とすだけのコマンドではなく、ログインユーザーへの通知 → 新規ログインブロック → プロセスへの終了シグナル送信 → ファイルシステム同期 → ハードウェア停止、という段階処理を実行します。
# 即時停止(停止までの段階処理は省略されないが、待ち時間ゼロ)
$ sudo shutdown -h now
# 内部的にはこの順序で処理される(systemd 環境の例)
# 1. wall コマンドで全ログインユーザーに通知
# "The system is going down for power-off NOW!"
# 2. /run/nologin を作成して新規ログインをブロック
# 3. 各サービスに SIGTERM(15番)を送信、TimeoutStopSec まで待つ
# 4. 終了しないプロセスに SIGKILL(9番)を強制送信
# 5. ファイルシステムを sync してアンマウント
# 6. ACPI で電源オフ
段階処理の中で時間がかかるのは「3.SIGTERM 待ち」です。journald や PostgreSQL のような書き込み系サービスは終了処理に数秒〜数十秒かかるため、本番では +1(1分後)など短い予告時間を入れて、データ書き出しの猶予を作る方が安全です。
# 1分後にシャットダウン(通知メッセージ付き)
$ sudo shutdown -h +1 "システムメンテナンスのため1分後に停止します"
# 5分後にシャットダウン(最もよく使う本番予告)
$ sudo shutdown -h +5
# 予約を取り消す(誤って打ってしまった場合)
$ sudo shutdown -c
私も新人時代に「now を打てば即電源が落ちる」と思い込み、書き込み中の DB を強制停止して手が動かなくなったことがあります。実体は段階処理であり、SIGTERM の応答時間が長いサービスがあると now でも体感数十秒かかります。本番では +1 以上の予告を基本にする方が安全です。
本記事のまとめ(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サーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。
「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 次のページへ:rebootコマンドでLinuxを再起動する方法|shutdownとの違いや安全な再起動手順も
- 前のページへ:logoutコマンドでLinuxからログアウトする方法|exitとの違いやセッション管理も
- この記事の属するカテゴリ:Linuxコマンドへ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます