SHUTDOWN(8)

名前
shutdown - システムを終了させる

書式
/sbin/shutdown [-t sec] [-arkhncfF] time [warning-message]

説明
shutdownはシステムを安全に終了させる。 ログインしている全てのユーザにはシステムが終了する旨が通知され、 また、新たなlogin(1)プロセスを生成する事は出来なくなる。 システムを直ちに終了させる事ができ、また指定した時間の後に終了させる事も出来る。 実行中の全てのプロセスに対しては、先ずSIGTERMシグナルを送り、 システムを終了する事を通知する。 こうして、vi(1)等のプログラムが現在編集中のファイルを保存し、 メイルやニュースを扱うプログラムが正常に終了するための余裕が与えられる。 Shutdownはinitプロセスにシグナルを送りランレベルの変更を 依頼する事により仕事をする。 ランレベル0はシステムを停止するために、 ランレベル6はシステムをリブートするために用いられる。 ランレベル1はシステムの管理業務が行なえる状態 (シングルユーザモード)にするために用いられる; shutdownに-h, -rのどちらのオプションも与えられなかった 場合のデフォルトはこのランレベルである。 システムの停止又はリブート時にどのような動作がなされるかは、 /etc/inittabファイル中のそれぞれのランレベルの適切な エントリーを参照せよ。

オプション

-a  /etc/shutdown.allowを使う。

-t sec
    他のランレベルに移行する際、 警告シグナルを送ってからsec秒待った後に kill シグナルを送る様 init(8) に指示する。

-k  実際にはシャットダウンを行なわない;ログイン中のユーザ全員へのメッセージ の送付のみ行なう。

-r  シャットダウン後リブートする。

-h  シャットダウン後システムを停止する。

-n  [使うべきでない] init(8) にシャットダウンを依頼するのではなく、 自力でシャットダウンを行う。 このオプションの使用はなるべく避けるように。 使用しても望んだ結果が得られるとは限らない。

-f  リブート時に fsck を行なわない。

-F  リブート時に必ず fsck を行なう。

-c  既に実行中のシャットダウンをキャンセルする。 当然ながら、このオプションと同時にtimeを指定する事は出来ない。 しかし、コマンドライン上に説明のためのメッセージを入力し、 ログイン中の全てのユーザに送る事は出来る。

time
    シャットダウンする時刻。

warning-message
    ユーザ全員に送られるメッセージ。

time引数は様々な書式で指定することが出来る。 一つは、hh:mmという書式を用いて絶対時刻で与える方法である。 ここで、hhは時(数字一つ又は二つ)、mmは分(数字二つ)を表す。 いま一つは、+mという書式によりm分の待機後に シャットダウンするよう指示する方法である。 nowは+0のエイリアスである。

待ち時間付きで shutdown が起動された場合、 login(1) のようなプログラムが新しいユーザーのログインを許可しないように /etc/nologin ファイルを作成する。 shutdown は init にシグナルを送る前に停止した場合 (キャンセルされるかなにかうまく行かなかった場合)にのみこのファイルを削除する。 そうでない場合、ユーザーがログイン出来るようにこのファイルを消すことは システムのシャットダウンスクリプトか起動スクリプトの責任である。

-fオプションは`reboot fast'を表す。 このオプションは /fastboot というアドバイス的なファイルを作る だけだが、システムの再起動時にこのファイルが、チェックされる。 ブート用 rc ファイルはこのファイルが存在した場合、システムが適切な方法で シャットダウンされたのでfsck(1)を起動する必要がないとの判断を下す事が できる。 ファイルシステムのチェックをスキップした後は、 /fastbootファイルはブートプロセスにより削除されなくてはならない。

-fオプションは`force fsck'を表す。 このオプションは /forcefsck というアドバイス的なファイルを作る だけだが、システムの再起動時にこのファイルが、チェックされる。 ブート用 rc ファイルはこのファイルが存在した場合、 fsck(1)を特別な`force'オプション付きで起動して、 適切にアンマウントされたファイルシステムでもチェックするようにする。 その後、/forcefsckファイルはブートプロセスにより削除されなくてはならない。

-nを用いた場合、shutdownはinitを呼び出さずに 全てのプロセスを自分自身で kill する。 それからshutdownは quota 及び accounting を停止し、 スワップを停め、全てのファイルシステムを unmount する。

アクセス制御
/etc/inittab中に適切なエントリーを作成しておく事により、 マジックキーCTRL-ALT-DELを押すとinit(8)が Shutdownを起動する様に設定することもできる。 しかしこれでは、コンソールのキーボードに触る事の出来る人なら誰でもシステムを シャットダウンできてしまう。 これを避けるため、 shutdownには、起動を許可されたユーザが 仮想コンソールのいずれかからログインしているかをチェックする機能がある。 shutdownが-a (/etc/inittab で shutdown を起動する時に追加しておく)付きで起動された場合は、 shutdownは/etc/shutdown.allowファイルが存在するかどうかを調べ、 そこに記されたログイン名を仮想コンソールからログインしている人 のリスト(/var/run/utmpから分かる)と比較し、 許可を受けたユーザの中の一人かrootがログインしている場合のみ シャットダウンを続行する。 そうでない場合は

shutdown: no authorized users logged in

というメッセージを(実在の)システムコンソールに出力する。 /etc/shutdown.allowファイルには、一行にユーザを一人記入する。 空行及び(行頭に#を付けた)コメント行があっても良い。 現在はユーザを32人しか記入しておけないという制限がある。

ファイル
/fastboot
/etc/inittab
/etc/init.d/halt
/etc/init.d/reboot
/etc/shutdown.allow

バグ
バグではないが、多くのユーザがtime引数を与えるのを忘れて しまい、shutdownの出すエラーメッセージに悩んでいる。 time 引数は必ず必要である; 全シャットダウンの内90パーセントはtime引数はnowだろう。

著者
Miquel van Smoorenburg, miquels@cistron.nl

関連項目
fsck(8), init(1), halt(8), reboot(8)