起動時に無限再起動ループを終了する(rc.local)

起動時に無限再起動ループを終了する(rc.local)

私はDebian Squeezeで(rc.localで呼び出される)起動スクリプトを作成しています。起動スクリプトは、ファイル内の変数の値を確認し、変数を減らしてファイルに書き換え、変数が0より大きい場合はテストを実行し、システムを再起動します。この変数が0以下の場合、システムは再起動されません。私の質問は次のとおりです。いくつかのテストの後、テストにバグがあることに気づいたとしましょう。壊す方法はないでしょうかテスト実行 - >再起動 - >繰り返し私が設定したループです。一つ入れる「1000睡眠」テストしている間ps aux|grepそれはうまくいくかもしれませんが、rc.localスクリプトが実行される前にアクセスできるかどうかはわかりません。前景の代わりにバックグラウンドでスクリプトを実行するとどうなりますか?この場合、テストがバックグラウンドで実行されている間にbashログインシェルなどにアクセスできますか?

 COUNT=`cat $testFile|wc -l`
 if [ $COUNT -gt 0 ];then
                ARGS=`head -1 $testFile`
                cd /testCode
                /testCode/startTest.sh $ARGS
                sed -i '1d' $testFile
                echo "rebooting"
                /sbin/reboot &
                exit 0
            fi

どんな情報が必要なのか分からないので、詳細をほとんど提供しないことを知っています。必要に応じて質問を更新します。

アップデート:テストしてみました。テストが完了する前にログインメッセージが表示されます。 rc.local 実行が完了した後にのみログインプロンプトが表示されます。誰かがこれについて明らかにできますか?

ベストアンサー1

/sbin/rebootを条件付き再起動に置き換えます。

[ -r /noreboot ] || /sbin/reboot 

その後、再起動したくない場合は、/ norebootをタッチするだけです。まだ再起動していない限り、スクリプトは現在実行している操作に関係なく続行できます。

また、livecdを使用してシステムを起動し、エラーが見つかった場合は、rc.localで再起動行をコメントアウトすることもできます。

おすすめ記事