halt コマンドは、Linuxシステムのすべてのプロセスを終了し、CPUを停止させるコマンドです。
システムの電源が切れるかどうかはハードウェアと設定によって異なり、停止状態のまま電源が入り続けることもあります。サーバーやVPS環境では挙動を理解したうえで使う必要があります。
構文(Syntax)
halt [オプション]
主なオプション一覧
| オプション | 説明 | 使用例 |
|---|---|---|
| (なし) | システムを停止(電源は環境による) | halt |
-p | システムの電源を切る(power off) | halt -p |
-f | 強制的に停止(プロセス終了処理を行わない) | halt -f |
-d | システムログに情報を残さない | halt -d |
haltを実行すると電源が切れるのか?
halt コマンドを実行すると、カーネルはすべてのプロセスを終了してCPUを停止させます。ただし、電源が切れるかどうかは環境によって異なります。
- systemd環境(Ubuntu、CentOS 7以降など):
haltはsystemctl haltと同等で、デフォルトではシステムが停止状態になっても電源は入ったままになることがあります。電源まで落としたい場合はpoweroffまたはshutdown -h nowを使うのが確実です。 - 古いSysVinit環境:
haltは「System halted.」と表示してCPUを停止し、電源は切れません。 - 電源まで落としたい場合:
halt -pまたはpoweroff、shutdown -h nowを使います。
halt・shutdown・poweroff・rebootの違い
システムを停止・再起動するコマンドは複数ありますが、それぞれ動作が異なります。
| コマンド | 動作 | 電源オフ | 主な用途 |
|---|---|---|---|
halt | CPUを停止する | 環境による(切れない場合もある) | システム停止 |
shutdown -h now | 安全にシステムを停止する | 基本的に切れる | 安全な停止(推奨) |
poweroff | システムを停止して電源を切る | 切れる | 確実な電源オフ |
reboot | システムを再起動する | 切れない(再起動) | システム再起動 |
haltとshutdownの違い
shutdown は時刻指定・ユーザー通知・安全な停止処理を行う多機能コマンドです。一方、halt は即座にCPUを停止させるシンプルなコマンドです。
shutdown -h now:ログイン中のユーザーに通知し、安全にプロセスを終了してから停止するhalt:通知なしで即座にCPUを停止する(プロセス終了は行われるが、ユーザー通知なし)
サーバーで使う場合は shutdown -h now の方が安全です。複数ユーザーがログインしている環境では、突然の停止を防ぐために shutdown を使ってください。
haltとpoweroffの違い
poweroff は「システムを停止して電源を切る」ことを明示的に行うコマンドです。halt はCPUを停止させますが、電源オフが保証されません。
poweroff:常に電源まで落とすhalt:CPUを停止するが、電源が切れないことがある(halt -pで電源まで落とせる)
haltとrebootの違い
reboot はシステムを再起動するコマンドです。halt と目的が根本的に異なります。
halt:システムを停止する(起動しなおさない)reboot:システムを停止してから再起動する
systemctl haltとの関係
systemd環境(Ubuntu 16.04以降、CentOS 7以降など現代的なLinuxディストリビューション)では、halt コマンドは内部的に systemctl halt を呼び出します。
sudo systemctl halt # haltと同等
sudo systemctl poweroff # 電源まで落とす
sudo systemctl reboot # 再起動
systemctl halt はsystemdのサービス停止処理を経由するため、より安全に停止できます。ただし電源オフが必要な場合は systemctl poweroff を使ってください。
実行例
システムを停止する(基本)
sudo halt
(CPUが停止します。電源が切れるかどうかは環境による)
安全に停止する(推奨)
sudo shutdown -h now
(ログイン中のユーザーに通知したうえで安全にシステムを停止する。サーバー環境ではこちらが推奨)
電源まで落とす
sudo poweroff
(確実に電源をオフにしたい場合はこちらを使う)
systemctl経由で停止する
sudo systemctl halt
(systemdのサービス停止処理を経由するため、より確実な停止処理が行われる)
強制停止(非常時のみ)
sudo halt -f
(プロセスを強制終了し、ただちに停止します。データ消失の危険があるため、通常は使用しない)
エラー例(root権限なしで実行)
halt
出力例:
halt: Need to be root
sudoが必要な理由
halt はシステム全体に影響するコマンドのため、実行には root権限(または sudo)が必要です。一般ユーザーが誤ってシステムを停止させるのを防ぐための制限です。
sudoグループに追加されているユーザーであれば sudo halt で実行できます。rootユーザーの場合は sudo なしで halt のみでも実行できます。
SSH接続中・サーバー環境での注意点
halt はローカルの物理マシン向けのコマンドです。以下の環境では特に注意が必要です。
SSH接続中に実行するリスク
SSH接続中に halt を実行すると、SSH接続が切断され、その後システムに接続できなくなります。物理アクセスなしに操作できないため、リモート接続でのサーバー管理では halt の使用は避けるべきです。
VPS・クラウド環境での注意点
AWS EC2、Google Cloud、さくらVPS、ConoHaなどのクラウド・VPS環境では:
haltを実行するとインスタンスが停止し、コントロールパネルからしか起動できなくなります- 一部の環境では「停止中」の状態でも課金が継続する場合があります
- 再起動が必要な場合は
rebootを使い、確実にシャットダウンする場合は管理コンソールから操作することも検討してください
複数ユーザーが使用しているサーバー
他のユーザーがログインしている可能性があるサーバーでは、halt より shutdown を使って事前通知を行うことが推奨されます。
sudo shutdown -h +5 "サーバーを5分後に停止します"
安全に停止したい場合の代替コマンド
安全にシステムを停止したい場合は、halt よりも以下のコマンドを使うことを推奨します。
| 状況 | 推奨コマンド |
|---|---|
| すぐに停止して電源を落としたい | sudo shutdown -h now |
| 確実に電源を落としたい | sudo poweroff |
| 数分後に停止したい(通知あり) | sudo shutdown -h +5 "停止します" |
| systemdで管理された停止をしたい | sudo systemctl poweroff |
よくある疑問
haltとshutdownはどちらを使うべきか?
特別な理由がなければ shutdown -h now を使う方が安全です。shutdown はプロセスの終了・ディスクの同期・ユーザー通知を安全に行ってから停止します。halt は即座に停止するため、未保存データが失われるリスクがあります。
haltしても電源が切れないことはあるか?
あります。halt はCPUを停止させますが、電源のオフはハードウェアのACPI対応に依存します。古いハードウェアやvm環境では「System halted.」と表示されたまま電源が入り続けることがあります。電源を確実に落としたい場合は poweroff または halt -p を使ってください。
VPSやクラウドサーバーでhaltを使ってよいか?
使えますが、注意が必要です。実行するとSSH接続が切断され、インスタンスがシャットダウン状態になります。再起動にはコントロールパネルからの操作が必要です。誤って実行した場合でも、コンソールからインスタンスを起動しなおせば復旧できます。
cronやスクリプトからhaltを実行してよいか?
技術的には可能ですが、推奨されません。スクリプトから自動停止させる場合は shutdown -h +0 や poweroff を使う方が確実です。また、sudo権限の設定が必要なため、セキュリティリスクにも注意してください。

コメント