はじめに

こんにちは!今回はhaltコマンドについて解説します。

haltはLinuxシステムをシャットダウンするコマンドです。“停止する"という意味ですね。

サーバーのメンテナンス、電源を落とす時、スケジュール起動など、システム管理者なら知っておきたいコマンドです。似たようなコマンド(rebootpoweroffshutdown)もあるので、使い分けを理解することが大切ですよ。


haltコマンドとは

haltは、Linuxシステムをシャットダウンする外部コマンドです。

実際には、initプロセスに対してシステムを停止させるシグナルを送ることで、安全にシャットダウンを実行します。halt実行後はシステムが停止しますが、電源は自動的には切れません(電源管理対応のシステムでは自動で切れることもあります)。

主な用途:

  • システムの安全なシャットダウン
  • メンテナンス前の停止
  • 定時シャットダウンのスケジューリング

基本構文

1
halt [オプション]

オプションなしで実行すると、すぐにシステムをシャットダウンします。


主なオプション

オプション 説明
-p シャットダウン後に電源を切る
-f ファイルシステムをマウント解除しない(強制)
-i シャットダウン時にネットワークインターフェースを止めない
-d シャットダウン情報をwtmpに記録しない
-n ファイルシステムをシンクしない(危険)
--verbose 詳細表示
--help ヘルプを表示

使用例

例1: システムをシャットダウンする

1
sudo halt

実行結果:

1
Halting system...

システムをシャットダウンします。シャットダウン完了後、システムは停止状態になります。


例2: シャットダウン後に電源を自動で切る

1
sudo halt -p

実行結果:

1
2
Halting system...
(システムが停止して電源が切れる)

-pオプションで、シャットダウン後に電源を自動で切ります。APMやACPI対応のシステムで有効です。


例3: 強制的にシャットダウン(ファイルシステム未マウント解除)

1
sudo halt -f

実行結果:

1
Halting system...

-fオプションで、ファイルシステムをマウント解除せずに停止します。ファイル破損のリスクがあるため、最終手段です。


例4: ネットワーク接続を保持したままシャットダウン

1
sudo halt -i

実行結果:

1
Halting system...

-iオプションで、ネットワークインターフェースを停止しません。リモート管理が必要な場合に使用します。


例5: wtmp記録なしでシャットダウン

1
sudo halt -d

実行結果:

1
Halting system...

-dオプションで、シャットダウン情報をログファイル(wtmp)に記録しません。


例6: 詳細表示付きでシャットダウン

1
sudo halt --verbose

実行結果:

1
2
3
4
Shutting down...
Stopping system services...
Unmounting file systems...
Halting system...

--verboseオプションで、シャットダウンの詳細な処理を表示します。


例7: rebootコマンドとの比較

1
2
3
4
5
# システムをシャットダウン(停止)
sudo halt

# システムを再起動
sudo reboot

実行結果:

1
(haltはシステム停止、rebootはシステム再起動)

haltは停止、rebootは再起動という違いがあります。


例8: poweroffコマンドとの比較

1
2
3
4
5
# システムをシャットダウンして電源を切る(halt -p と同等)
sudo poweroff

# システムをシャットダウンして停止状態のまま
sudo halt

実行結果:

1
(poweroffは電源まで切る、haltは停止状態)

poweroffは電源切断、haltは停止状態という違いがあります。


例9: shutdownコマンドによる遅延シャットダウン

1
2
3
4
5
# 10分後にシャットダウン
sudo shutdown -h +10 "System will be halted in 10 minutes"

# 00:00にシャットダウン
sudo shutdown -h 00:00 "System will be halted at midnight"

実行結果:

1
(10分後、または指定時刻にシャットダウン)

shutdownコマンドで遅延シャットダウンをスケジュールできます。


例10: シャットダウンのキャンセル

1
2
# 実行中のシャットダウンをキャンセル
sudo shutdown -c

実行結果:

1
Shutdown cancelled

shutdown -cでスケジュール済みのシャットダウンをキャンセルできます。


Tips・注意点

halt、reboot、poweroff、shutdownの使い分け

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# halt:システムを停止(電源はそのまま)
sudo halt

# halt -p / poweroff:システムを停止して電源を切る
sudo halt -p
sudo poweroff

# reboot:システムを再起動
sudo reboot

# shutdown:遅延シャットダウンをスケジュール
sudo shutdown -h +10
sudo shutdown -r +10

用途に応じて使い分けることが大切です。


Root権限が必須

1
2
3
4
5
6
# ✗ エラー:権限不足
halt
halt: need to be root

# ✓ sudo で実行
sudo halt

haltコマンドはroot権限が必須です。通常のユーザーでは実行できません。


shutdownコマンドの利点

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# halt:即座にシャットダウン
sudo halt

# shutdown:事前通知付きで遅延シャットダウン
sudo shutdown -h +5 "Server maintenance. Shutting down in 5 minutes"

# ユーザーに警告時間を与える
sudo shutdown -h +30 "Reboot in 30 minutes"

# キャンセル可能
sudo shutdown -c

ユーザーに通知を送りたい場合はshutdownが便利です。


ファイルシステムの同期

1
2
3
4
5
# sync:メモリをディスクに書き込み(重要!)
sudo sync

# その後にシャットダウン
sudo halt

シャットダウン前にsyncを実行してファイルシステムを同期することが推奨されます。


定時起動・定時停止の管理

1
2
3
4
5
6
# crontabで定時シャットダウン
# 毎日23:59にシャットダウン
59 23 * * * /sbin/shutdown -h now

# 毎日09:00に起動(BIOSやWake-on-LANで設定)
# crontab以外のシステムレベルの設定が必要

定時のシャットダウンはcronでスケジュール可能です。


実践的な使い方

メンテナンス前のシャットダウン

1
2
3
4
# ユーザーに通知
sudo shutdown -h +10 "Server maintenance. Shutting down in 10 minutes"

# 10分後にシャットダウンが実行される

ユーザーに事前通知を与えながらシャットダウンします。


デスクトップの定時シャットダウン

1
2
3
4
5
6
7
8
#!/bin/bash
# 毎日18:00にシャットダウンするスクリプト
SHUTDOWN_TIME="18:00"
CURRENT_TIME=$(date +%H:%M)

if [ "$CURRENT_TIME" = "$SHUTDOWN_TIME" ]; then
  sudo shutdown -h now "Automatic shutdown at $SHUTDOWN_TIME"
fi

crontabで定期実行してデスクトップの定時シャットダウンが実現できます。


リモートサーバーの安全なシャットダウン

1
2
3
4
5
6
7
8
#!/bin/bash
# 複数台のサーバーを安全にシャットダウン
SERVERS=("server1" "server2" "server3")

for server in "${SERVERS[@]}"; do
  echo "Shutting down $server..."
  ssh root@$server "sync && halt -p"
done

複数台のサーバーを順番にシャットダウンできます。


緊急シャットダウンの手順

1
2
3
4
5
6
7
8
# 1. ユーザーに警告(5分)
sudo shutdown -h +5 "EMERGENCY: System will halt in 5 minutes"

# 2. 重要なデータを保存するよう促す

# 3. シャットダウンを実行
# または、キャンセルする場合:
sudo shutdown -c

緊急時でも順序立てた手順が重要です。


まとめ

haltコマンドのポイント:

  • 基本形式sudo halt(システムを停止)
  • 電源切断sudo halt -p(電源まで切る)
  • 強制停止sudo halt -f(最終手段)
  • 遅延停止sudo shutdown -h +10(10分後)
  • 再起動sudo reboot(再起動)
  • 比較:halt(停止)、poweroff(電源切)、reboot(再起動)
  • 推奨手順:sync → shutdown(通知付き遅延)→ halt

システムシャットダウンはシステム管理の基本。shutdownで遅延通知を行う方式が、実運用では最も安全で丁寧な方法ですよ!