initctl(8) 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 を使うことにより、 同じ (一般的な) サービスを提供できる複数のプログラムを持つことができる (例えば sendmailqmail は共に 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) がコマンドを書き込む。

著者

Richard Gooch ([email protected])

入手先

Util-Linux パッケージは ftp://ftp.??.kernel.org/pub/linux/utils/util-linux/ から入手可能である。