시작 시 무한 재부팅 루프 종료(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에서 다시 시작 줄을 주석 처리할 수 있습니다.

답변2

/etc/rc.local실행이 완료될 때까지 로그인 프롬프트가 표시되지 않습니다.

테스트가 실행되는 동안 로그인을 허용하려면 @reboot날짜 필드가 있는 crontab에 텍스트를 넣거나 백그라운드에서 테스트를 실행하세요 /etc/rc.local. 누군가 로그인한 후 몇 분 후에 컴퓨터가 갑자기 다시 시작되면 놀랄 수 있습니다. /etc/motd이런 일이 발생하고 있음을 사용자에게 알리는 알림을 갖는 것이 좋습니다 .

관련 정보