Linuxのshutdownコマンドとは?安全なシャットダウン・再起動・時間指定を解説

コマンドリファレンス

Linuxのshutdownコマンドは、システムを安全に停止・再起動するための標準コマンドです。単純に電源を切るのではなく、実行中のプロセスを正しく終了させ、ファイルシステムへの書き込みを完了させてからシステムを停止します。サーバー運用において、安全なシャットダウン手順を知っておくことは必須の知識です。

shutdownコマンドとは

shutdownは、Linuxシステムを安全に停止・再起動するためのコマンドです。以下の処理を順番に行います。

  • ログイン中のユーザーに警告メッセージを送信する
  • 新しいログインを禁止する
  • 実行中のプロセスにシグナルを送って正常終了させる
  • ファイルシステムをアンマウントして安全な状態にする
  • システムを停止または再起動する

現代のLinuxではsystemdshutdownコマンドのバックエンドとして動作しています。

構文

shutdown [OPTION] [TIME] [MESSAGE]

主なオプション一覧

オプション説明使用例
-hシステムを停止(halt または poweroff)shutdown -h now
-rシステムを再起動(reboot)shutdown -r now
-P電源を切る(power off)shutdown -P now
-HCPUを停止するが電源は切らない(halt)shutdown -H now
-c予定されているシャットダウンを取り消すshutdown -c
now即時実行shutdown -h now
+NN分後に実行shutdown -h +10
HH:MM指定時刻に実行shutdown -h 23:00
MESSAGEログイン中ユーザーへの通知メッセージshutdown -r +5 "再起動します"

即時シャットダウン

システムを今すぐ停止するには以下のいずれかを使います。

sudo shutdown now
sudo shutdown -h now

shutdown nowshutdown -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)プロセス終了・ファイルシステム処理を行ってから停止。最も安全。
haltCPUを停止(電源は切れないことがある)systemd環境ではpoweroffと同等に動作することが多い
poweroff電源を切るshutdown -P now相当。即時に電源オフ。
reboot再起動shutdown -r now相当。即時に再起動。

haltpoweroffrebootは即時実行されるため、時間指定や事前メッセージ通知の機能はありません。複数ユーザーが利用するサーバーではshutdownコマンドを使うのが基本です。

systemctl との関係

systemd環境ではsystemctlコマンドでも同等の操作ができます。

shutdown コマンドsystemctl コマンド
sudo shutdown -h nowsudo systemctl poweroff
sudo shutdown -r nowsudo systemctl reboot
sudo shutdown -H nowsudo 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コマンド完全ガイド:初心者が最初に覚えるべきコマンド一覧。

参考

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント