2011-08-01 10 views
1

システム起動時に実行されていた場合、特定のオプションを持つコマンドを実行するinit.dスクリプトを書いています。ユーザーが手動でスクリプトを実行していた場合は、同じスクリプトで他のオプションを使用してコマンドを実行する必要があります。linux:実行中のinit.dスクリプトがシステム起動シーケンスの一部として実行されているかどうかを調べる

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

私がこれを達成できる方法は、すべての起動スクリプトが実行された後に削除される、親rcスクリプトから "/tmp/.boot"というファイルを作成することです。そして、initスクリプトで/tmp/.bootファイルの存在をチェックして、スクリプトが起動シーケンスの一部として実行されているかどうかを判断します。

システムがブートアップシーケンスに入っていることを知る既存の方法があるかどうか疑問に思っていました。/proc /などのどこかで、システムがブートシーケンスに入っていることがわかりますか?

あなたのご提案をお待ちしています。

おかげで、よろしく 〜サミール

答えて

0

はまず、中/ procの状態はそれほど異なる多くのスクリプトのためにすべきではありません。ランレベルは、あなたが初期のブートフェーズ(runlevelにアクセスできるかどうか)を示していますが、ミッドブート時には起動ランレベルSが残っています。

しかし、これは悪いことではなく、ランレベルに応じて動作を変更するスクリプトを作成しようとすると悪です。 Undebugable。代わりに、 'start'ではなく 'start-all'のように、代わりに他のコマンドライン引数を試してみてください。あるいは、DebianのようにRCスクリプトを分離します。

+0

だと、私はそのようなスクリプトを書いていないことを確認します。 –

関連する問題