Linuxのshutdownコマンドは、システムを安全に停止・再起動するための標準コマンドです。単純に電源を切るのではなく、実行中のプロセスを正しく終了させ、ファイルシステムへの書き込みを完了させてからシステムを停止します。サーバー運用において、安全なシャットダウン手順を知っておくことは必須の知識です。
shutdownコマンドとは
shutdownは、Linuxシステムを安全に停止・再起動するためのコマンドです。以下の処理を順番に行います。
- ログイン中のユーザーに警告メッセージを送信する
- 新しいログインを禁止する
- 実行中のプロセスにシグナルを送って正常終了させる
- ファイルシステムをアンマウントして安全な状態にする
- システムを停止または再起動する
現代のLinuxではsystemdがshutdownコマンドのバックエンドとして動作しています。
構文
shutdown [OPTION] [TIME] [MESSAGE]
主なオプション一覧
| オプション | 説明 | 使用例 |
|---|---|---|
-h | システムを停止(halt または poweroff) | shutdown -h now |
-r | システムを再起動(reboot) | shutdown -r now |
-P | 電源を切る(power off) | shutdown -P now |
-H | CPUを停止するが電源は切らない(halt) | shutdown -H now |
-c | 予定されているシャットダウンを取り消す | shutdown -c |
now | 即時実行 | shutdown -h now |
+N | N分後に実行 | shutdown -h +10 |
HH:MM | 指定時刻に実行 | shutdown -h 23:00 |
MESSAGE | ログイン中ユーザーへの通知メッセージ | shutdown -r +5 "再起動します" |
即時シャットダウン
システムを今すぐ停止するには以下のいずれかを使います。
sudo shutdown now
sudo shutdown -h now
shutdown now と shutdown -h now の違い
shutdown nowはシングルユーザーモード(ランレベル1)に移行します。システムは停止しますが、実装によっては電源が切れない場合があります。shutdown -h nowは確実に停止(halt または poweroff)を行うため、通常のシャットダウンには-hオプションを付けることを推奨します。
時間指定してシャットダウン
何分後にシャットダウンするか、または何時何分にシャットダウンするかを指定できます。サーバーメンテナンスの事前告知として使います。
N分後にシャットダウン
sudo shutdown -h +10
10分後にシャットダウンします。実行すると以下のようなメッセージが表示されます。
Shutdown scheduled for Mon 2025-08-27 12:35:00 JST, use 'shutdown -c' to cancel.
指定時刻にシャットダウン
sudo shutdown -h 23:00
23:00にシャットダウンします。深夜のメンテナンス作業などに便利です。
シャットダウンをキャンセルする
予約したシャットダウンを取り消すには-cオプションを使います。
sudo shutdown -c
ログイン中のすべてのユーザーにキャンセルが通知されます。
sudo shutdown -c "メンテナンスが中止になりました"
メッセージ付きでキャンセルを通知することもできます。
再起動する
-rオプションで再起動します。
sudo shutdown -r now
時間を指定して再起動することも可能です。
sudo shutdown -r +5
sudo shutdown -r 02:00
メッセージ付きでユーザーに通知する
時刻指定と組み合わせて、ログイン中のユーザーに通知メッセージを送ることができます。複数人が利用するサーバーでの事前告知に重要です。
sudo shutdown -r +10 "10分後にアップデートのため再起動します。作業を保存してください。"
sudo shutdown -h 23:00 "本日23時にメンテナンスのためシャットダウンします。"
メッセージはすべてのログイン端末にwallコマンド相当で配信されます。
halt / poweroff / reboot との違い
Linuxにはshutdown以外にも停止・再起動のコマンドがあります。それぞれの違いを整理します。
| コマンド | 動作 | 特徴 |
|---|---|---|
shutdown -h now | 停止(halt または poweroff) | プロセス終了・ファイルシステム処理を行ってから停止。最も安全。 |
halt | CPUを停止(電源は切れないことがある) | systemd環境ではpoweroffと同等に動作することが多い |
poweroff | 電源を切る | shutdown -P now相当。即時に電源オフ。 |
reboot | 再起動 | shutdown -r now相当。即時に再起動。 |
halt・poweroff・rebootは即時実行されるため、時間指定や事前メッセージ通知の機能はありません。複数ユーザーが利用するサーバーではshutdownコマンドを使うのが基本です。
systemctl との関係
systemd環境ではsystemctlコマンドでも同等の操作ができます。
| shutdown コマンド | systemctl コマンド |
|---|---|
sudo shutdown -h now | sudo systemctl poweroff |
sudo shutdown -r now | sudo systemctl reboot |
sudo shutdown -H now | sudo systemctl halt |
現代のLinux(Ubuntu 16.04以降、CentOS 7以降)ではshutdownコマンドは内部的にsystemctlを呼び出しています。どちらを使っても結果は同じですが、時間指定やメッセージ機能が必要な場合はshutdownコマンドが便利です。
ディストリビューション別の補足
主要なLinuxディストリビューションでの動作に大きな差異はありませんが、以下の点を押さえておくと安心です。
Ubuntu / Debian系
systemdが標準のためshutdownはそのまま使えます。sudoを使えばroot権限不要です。
sudo shutdown -h now
CentOS / RHEL系
CentOS 7以降・RHEL 7以降はsystemdが標準です。CentOS 6以前のSysVinit環境では動作が若干異なる場合がありますが、基本的な使い方は同じです。
sudo shutdown -h now
sudo が使えない場合
su -c "shutdown -h now"
SSH接続中に実行する場合の注意点
SSH経由でリモートサーバーにログインしている状態でシャットダウンを実行することは可能です。ただし、以下の点に注意が必要です。
- SSH接続は切断される:シャットダウンが始まるとSSHセッションが終了します。これは正常な動作です。
- 即時実行には注意:
shutdown -h nowを実行すると、コマンドの応答を確認できないまま接続が切れます。shutdown -h +1のように1分後に設定すると、コマンド実行を確認してから切断されます。 - 再起動後に再接続できるか確認:VPSやクラウドサーバーでシャットダウンすると、次回起動までSSH接続できません。再起動(
-r)と停止(-h)を間違えないよう注意してください。
VPS・クラウドサーバーで実行する場合の注意点
VPSやAWS EC2・さくらのクラウドなどのクラウドサーバーでは、shutdown -h nowの挙動が物理サーバーと異なる場合があります。
- OSシャットダウン ≠ 課金停止:OSをシャットダウンしてもインスタンスが「停止中」状態のままで課金が継続するサービスがあります(AWSのEC2など)。課金を止めるにはコンソールからインスタンスを「停止」または「削除」する必要があります。
- 再起動できない場合がある:
shutdown -h nowでOSを止めると、物理電源ボタンがないため自分で電源を入れ直すことができません。再起動が必要な場合はshutdown -r nowか、クラウドコンソールから操作してください。 - スナップショットを取ってから実行:重要なメンテナンス前はスナップショットやバックアップを取ることを推奨します。
cronやスクリプトから実行する場合
定期的に深夜シャットダウンするなど、自動化することも可能です。ただしいくつかの注意点があります。
cronからの実行例
# 毎日23:55にシャットダウン(root の crontab に記載)
55 23 * * * /sbin/shutdown -h now
cronから実行する場合はフルパスで指定し、root の crontab(sudo crontab -e)に記述します。
スクリプトからの実行例
#!/bin/bash
# バックアップ完了後にシャットダウン
/path/to/backup.sh
sudo shutdown -h now
- スクリプト内では
sudoが対話なしで実行できるよう/etc/sudoersの設定が必要な場合があります - スクリプト実行中にシャットダウンが走ると、後続の処理が中断されます。シャットダウンは最後に書くこと
よくある疑問
shutdown now と shutdown -h now は何が違うか
shutdown nowは引数なしのため、シングルユーザーモードへの移行(ランレベル1)を行います。実際の電源オフは保証されません。shutdown -h nowは-h(halt)オプションを付けることで、確実に停止処理を行います。通常のシャットダウンには-hオプションを付けることを推奨します。
shutdownを取り消すにはどうするか
sudo shutdown -c
-cオプションでキャンセルできます。ただし即時実行(now)は取り消せません。
再起動するにはどうするか
sudo shutdown -r now
またはsudo rebootでも同様の結果になります。
一定時間後にシャットダウンするにはどうするか
sudo shutdown -h +30
+NでN分後に実行できます。またHH:MM形式で特定の時刻を指定することも可能です。
SSH接続中に実行してよいか
実行は可能ですが、シャットダウンが始まるとSSHセッションが切断されます。shutdown -h nowではなくshutdown -h +1のように少し時間を置くと、コマンドの送信を確認してから切断されます。再起動(-r)か停止(-h)かを間違えないよう注意してください。
root権限なしで実行するとどうなるか
shutdown -h now
# shutdown: Need to be root
root権限がない場合はエラーになります。sudoを付けて実行してください。
関連コマンド
halt:CPUを停止するコマンド。systemd環境ではpoweroffと同等に動作することが多い。poweroff:電源を切るコマンド。shutdown -P now相当。reboot:システムを再起動するコマンド。shutdown -r now相当。- Linuxコマンド完全ガイド:初心者が最初に覚えるべきコマンド一覧。

コメント