initctl -
simpleinit(8)
を制御するためのユーティリティ
need [-r] service
display-services
provide service
initctl
プログラムは、システム起動スクリプトの
堅牢さ・拡張性・可読性を向上するためにデザインされている。
現在では、SysV
形式の起動スクリプトで使われている
複雑で脆い多くのシンボリックリンクによる方法を使うことなく、
モジュール化した起動スクリプトを書くことができる。
各スクリプトは、それを起動する前に何が必要かを
need(8)
を使って簡単に宣言できる。
need の説明¶
need
プログラムは、
simpleinit(8)
に対して
service (通常は
/sbin/init.d 内のスクリプト)
を
開始するように指示し、
その service
が使用可能になるまで待たせるためのユーティリティである。
service
が既に使用可能な場合、再び起動されることはない。
-r
オプションは、
simpleinit(8)
に対して
service
までのサービスを
「押し戻す (roll
back)」(停止する)
ように指示する
(指定されたサービスは含まない)。
service
が指定されない場合、
全てのサービスを停止する。
よって、
-r
オプションにより、
システムを部分的または全体的に順序立ててシャットダウンすることができる。
実行するためには、未だに
shutdown(8)
プログラムが必要とされる。
display-services の説明¶
display-services
として起動された場合、
現在使用可能なサービスのリストと失敗したサービスのリストを
標準出力に書き出す。
provide の説明¶
provide
として起動された場合、
simpleinit(8)
に対して親プロセス
(呼び出したプロセス)
が
service
という名前のサービスを提供するように指示する。
呼び出したプロセスが正常に
(ステータス 0 で)
終了した場合、
サービスが使用可能であると考えられる。
service
のインスタンスは 1
つだけ起動されるので、
他にこのサービスを提供するプログラムはブロックされて失敗する。
provide
を使うことにより、
同じ (一般的な)
サービスを提供できる複数のプログラムを持つことができる
(例えば
sendmail と
qmail
は共に
mta
サービスを提供する)。
ここで、実際にサービスを提供するのは
1 つだけである。
これは設定ファイルをチェックするサービス起動スクリプトで使うことができる。
終了コード¶
サービスが正常に起動した場合、
need
からの終了コードは 0
である。
サービスが失敗した場合は
1 である。
サービスが使用不能の場合
(つまり、設定ファイルで不可にされている場合)
は 2 である。
これらの終了コードは、サービス起動スクリプトからの終了コードを反映する。
サービスが正常に停止した場合、
need -r
からの終了コードは 0
である。
サービスが停止できなかった場合は
1 である。
サービスが開始できなかった場合は
2 である。
サービスのシャットダウンスクリプトは、
(正常な場合の) 0 と
(失敗の場合の) 1
しか返さない。
サービスが提供できた場合、
provide の終了コードは 0
である。
提供できなかった場合は
1 である。
親プロセスが init
の子でない場合は 2
である。
このプログラムは、そのサービスを初期化する
他のサービス提供プログラムをブロックして待たせる。
シグナル¶
initctl(8) は
simpleinit(8)
と通信するために
SIGUSR1,
SIGUSR2,
SIGPOLL
を使う。
これらのシグナルを
need(8)
に送ってはならない。
ファイル¶
- /dev/initctl
- simpleinit(8)
によって作成される制御
FIFO で、 initctl(8)
がコマンドを書き込む。
関連項目¶
simpleinit(8),
init(8)
need(8) を使った
新しいブートスクリプトシステムについてのもっと全面的な議論は、
http://www.atnf.csiro.au/~rgooch/linux/boot-scripts/
で閲覧できる。
Richard Gooch (rgooch@atnf.csiro.au)
入手先¶
Util-Linux パッケージは
ftp://ftp.??.kernel.org/pub/linux/utils/util-linux/
から入手可能である。