1

システムの起動時に実行された場合に特定のオプションを指定してコマンドを実行するinit.dスクリプトを作成しています。ユーザーが手動でスクリプトを実行している場合は、同じスクリプトで他のオプションを使用してコマンドを実行する必要があります。

たとえば、ネットワークスクリプトでは、システムの起動時に実行されていた場合、ONBOOTで構成する必要があるかどうかによっては、特定のネットワークインターフェイスが起動されません。そうしないと、ユーザーがネットワークスクリプトを手動で実行している場合(サービスネットワークの開始)、すべてのネットワークインターフェイスが起動します。

これを実現する1つの方法は、親rcスクリプトから「/tmp/.boot」というファイルを作成することです。このファイルは、すべての起動スクリプトが実行された後に削除されます。次に、initスクリプトで、ファイル/tmp/.bootの存在を確認して、スクリプトが起動シーケンスの一部として実行されているかどうかを判断します。

システムが起動シーケンスにあることを知るための既存の方法があるかどうか疑問に思いました。/ proc /または他の場所にある何かが、システムがそのブートシーケンスにあることを教えてくれますか?

あなたの提案を楽しみにしています。

よろしくお願いします〜Sameer

4

1 に答える 1

0

まず、/ procの状態は、多くのスクリプトでそれほど変わらないはずです。ランレベルは、初期のブートフェーズにあるかどうか(runlevelアクセスを許可するかどうか)を示しますが、ブートの途中では、起動時のランレベルSが残ります。

ただし、これは悪いことではなく、ランレベルに応じて動作を変更するスクリプトを作成しようとするのは悪です。デバッグ不能。代わりに、「start」ではなく「start-all」など、他のコマンドライン引数を試すことができます。または、DebianのようにRCスクリプトを分離します。

于 2011-08-01T06:42:09.487 に答える