Debian 프로비저닝 중에 백그라운드 재부팅 예약

Debian 프로비저닝 중에 백그라운드 재부팅 예약

다운로드 문제 등이 있는 경우 설치가 중단되지 않도록(현장의 누군가가 수동으로 시스템을 재부팅해야 함) Debian 프로비저닝에서 30분 재부팅 타이머를 예약하고 싶습니다.

네트워크에서 이미지 설치를 부팅하고 있습니다.

다음은 작동하지 않습니다(백그라운드에서 실행되지 않고 포그라운드에서 실행됨).

d-i preseed/early_command string reboot -d 1800 &
d-i preseed/early_command string sh -c 'reboot -d 1800 &' ;

범인은 log-output여기서 사용하는 프로그램 인 것 같아요https://salsa.debian.org/installer-team/preseed/-/blob/master/preseed_command#L16

계획된 재시작을 수행하는 다른 방법이 있습니까? 추가 소프트웨어를 설치하지 않아도 된다면 참 좋을 것 같아요(역시 네트워크 문제...)

답변1

편집하다

screenDebian의 설치 프로그램 환경에서 사용이 가능하다는 것을 깨달았습니다 .아니요우분투에서 사용 가능). 따라서 이 코드 조각과 유사한 사전 설정 구성을 사용할 수 있습니다.

d-i preseed/early_command string \
  screen -dmS reboot /sbin/reboot -d 60

원본 게시물

좀 더 자세히 살펴본 후에는 원하는 것을 정확히 수행하려면 백그라운드에서 실행되고 올바르게 실행되는 데몬 프로세스를 작성해야 한다고 생각합니다 /sbin/reboot. 이를 사용하여 early_command컴파일된 데몬을 다운로드하고 실행할 수 있습니다.

저는 다음 사전 설정 스니펫을 테스트하는 것으로 시작했습니다. Ubuntu 20.04에서는 원하는 방식으로 작동하지만아니요Debian Buster에서 작업하기(경험한 대로).

d-i preseed/early_command string \
  /sbin/reboot -d 60 &

두 설치 프로그램의 셸에서 테스트한 결과 log-output데비안이 다르게 동작하는 이유가 나타났습니다.

나는 log-output.c그것을 발견했다패치됨"작업자 프로세스가 표준 파일 설명자의 연결을 완전히 끊지 않는 데몬을 시작하는 경우"를 처리합니다. Ubuntu에는 아직 이 패치가 있지만 Debian은복원했다그로 인해 발생한 오류 때문입니다.

설치 프로그램 환경은 매우 작습니다. nohup, screen, 또는 start-stop-daemon백그라운드 프로세스의 대안으로 사용할 수 없습니다 . 그래서 제대로 백그라운드에서 실행하고 원하는 명령을 실행할 수 있는 실행 파일이 필요하다고 생각합니다.

링크

관련 정보