SHUTDOWN(8) | Linux System Administrator's Manual | SHUTDOWN(8) |
shutdown - システムを終了させる
/sbin/shutdown [-t sec] [-arkhncfF] time [warning-message]
shutdown はシステムを安全に終了させる。 ログインしている全てのユーザにはシステムが終了する旨が通知され、 新たな login(1) プロセスは生成されなくなる。 shutdown はシステムを直ちに終了させることも、 また指定した時間の経過後に終了させることもできる。 実行中の全てのプロセスには、 まず SIGTERM シグナルが送信され、 システムの終了が通知される。 これによって、 vi(1) のようなプログラムが現在編集中のファイルを保存するための、 またメールやニュースを扱うプログラムが正常に終了するための余裕が与えられる。 shutdown は、init プロセスにシグナルを送り、 ランレベルの変更を依頼することによって、システムを終了させる。 ランレベル 0 はシステムを停止するために、 ランレベル 6 はシステムをリブートするために用いられる。 ランレベル 1 はシステムの管理業務が行なえる状態 (シングルユーザモード) にするために用いられる。 shutdown に -h と -r いずれのオプションも与えられなかった場合は、 デフォルトでランレベル 1 になる。 システムの停止やリブートの際にどのような動作がなされるかは、 /etc/inittab ファイルのエントリのうち、 それぞれのランレベルに対応するものを参照すること。
time 引数は様々な書式で指定できる。 まず、hh:mm という書式で時刻を与える方法がある。 ここで hh は時 (数字 1 つか 2 つ)、 mm は分 (数字二つ) である。 二つめは +m という書式で、 m 分待機した後にシャットダウンするよう指示する方法である。 now は +0 のエイリアスである。
遅延指定付きで起動されると、shutdown は /etc/nologin ファイルを作成し、 login(1) のようなプログラムが 新たなユーザログインを許可しないようにする。 shutdown は、init にシグナルを送る前に停止した場合 (キャンセルされたか、なにか問題があった場合)、このファイルを削除する。 init にランレベルを変更するよう伝える前にも、 shutdown はこのファイルを削除する。
-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 人までしか記入しておけないという制限がある。
/etc/shutdown.allow が存在しない場合は、 -a 引数は無視される。
/fastboot /etc/inittab /etc/init.d/halt /etc/init.d/reboot /etc/shutdown.allow
多くのユーザが time 引数を忘れ、 shutdown の出すエラーメッセージに悩んでいる。 time 引数は必ず指定しなければならない。 あらゆるシャットダウンのうちの 90 パーセントまでは、 time 引数は now でいいだろう。
init はコンソールモードでのみ CTRL-ALT-DEL をキャッチし、 シャットダウンを開始する。システムで X Window System が動作していると、 X サーバがすべてのキーストロークを処理する。 X11 の環境によっては CTRL-ALT-DEL をキャッチすることも可能になっているが、 実際にこのイベントによって何が行われるかはその環境に依存する。
シャットダウンは setuid で動作するようには設計されなかった。 /etc/shutdown.allow は誰が shutdown を実行したかを調べるためのものではなく、 誰が現在コンソール (のどれか) にログインしているかをチェックするための ものに過ぎない。
Miquel van Smoorenburg, miquels@cistron.nl
Juli 31, 2001 |