macOSシャットダウンコマンドとは?

shutdownコマンドはmacOSに組み込まれたユーティリティで、Terminalからコンピュータの電源を切ったり、再起動したり、スリープ状態にしたりできます。このコマンドは、動作を制御するフラグ、実行時刻をスケジュールする時間引数、および操作開始前にログイン中のユーザーに表示されるオプションのブロードキャストメッセージを受け入れます。

shutdownはシステム状態を変更するため、通常は管理者権限が必要で、sudoで実行されます。管理者がメンテナンスウィンドウを計画するため、パワーユーザーが業務終了時のルーチンを自動化するため、そして追加ソフトウェアなしでMacを確実に停止または再起動する必要があるスクリプトによって一般的に使用されます。

ツール説明

このツールはシンプルなフォームから有効なmacOS shutdownコマンドを生成します。アクション(動作)を選択し、実行時刻を決定し、オプションでブロードキャストメッセージと詳細フラグを追加して、生成されたコマンドをTerminalまたはシェルスクリプトにコピーします。

即座に停止(電源オフ):

sudo shutdown -h now

5分後に再起動し、ユーザーにメッセージを表示:

sudo shutdown -r +5 "Rebooting for maintenance"

特定の日時でスリープ(2026年4月30日23:00):

sudo shutdown -s 2604302300

停止せずにユーザーに警告(ブロードキャストのみ):

sudo shutdown -k +10 "Please save your work"

以前にスケジュールされたシャットダウンをキャンセル:

sudo killall shutdown

機能

  • 停止、再起動、スリープ、警告のみ、キャンセルアクション用のコマンドを生成
  • アクションを即座に、N分後、または絶対日時でスケジュール
  • ログイン中のユーザーに表示されるブロードキャストメッセージを追加
  • sudo-n(fsck/sync なし)、-o(プロセスへのSIGTERM送信なし)をトグル
  • 生成されたコマンドのライブプレビュー。Terminalまたはスクリプトにコピー可能

ユースケース

  • ワークステーションにシステムアップデートをインストール後、夜間の再起動をスケジュール
  • launchdジョブまたはメンテナンススクリプトから固定時刻にクリーンシャットダウンをトリガー
  • 共有Macが電源オフされる前に、ログイン中のユーザーに警告

オプション説明

  • アクション — 動作を選択:停止(-h)、再起動(-r)、スリープ(-s)、警告のみ(-k)、または保留中のシャットダウンをキャンセル(killall shutdown)。
  • 時間モードNowはリテラルnowを使用、In minutes+Nを使用、At date and timeshutdown(8)で予想される絶対yymmddhhmm形式を生成します。
  • メッセージ — クォートされたブロードキャストメッセージを追加。埋め込まれたクォートはエスケープされ、改行は削除されます。
  • Sudoを使用 — コマンドの前にsudoを付けて、必要な管理者権限で実行します。
  • fsck なし / sync なし(-n — 停止前のファイルシステム同期をスキップします。高速ですが、通常は健全なシステムでは推奨されません。
  • SIGTERM なし(-oshutdownにシステムをシャットダウンする前にプロセスにSIGTERMを送信しないよう指示します。注意して使用してください。

仕組み

内部的には、shutdown(8)はシステム遷移をスケジュールします。時間引数は以下のいずれかです:

  • now — 即座に実行
  • +N — 現在からN分後に実行
  • yymmddhhmm — 2桁の年、月、日、時間、分としてエンコードされた絶対日時で実行

macOSはLinuxのようなネイティブな-cキャンセルフラグを提供しません。保留中のシャットダウンをキャンセルするには、sudo killall shutdownでスケジュールされたshutdownプロセス自体を終了します。このツールはキャンセルアクションが選択されたときにこれを生成します。

ヒント

  • 本番環境以外のマシンで必ずコマンドをテストしてください。停止または再起動すると、実行中のすべてのアプリケーションが閉じられます。
  • 警告アクションを使用して、実際にシャットダウンせずにユーザーに通知します。ドライランに便利です。
  • 絶対時刻でスケジュールする場合、日付が将来であることを二重確認してください。過去の時刻はshutdownによって拒否されます。
  • インタラクティブなTerminalから実行してsudoがパスワードを入力できるようにするか、自動スクリプトから呼び出す場合はshutdownのパスワードなしsudoを設定してください。