무인 업그레이드 보류중인 재부팅으로 사용자가 종료되지 않음


1

공용 컴퓨터 실에서 Ubuntu 14.04를 실행하면서 무인 업그레이드를 활성화하고 밤에는 02.00에 재부팅하도록 구성했습니다. PC는 이중 부팅이므로 사용자는 다른 OS를 부팅하기 위해 컴퓨터를 재부팅하지만 업데이트가 설치되어 재부팅하도록 설정 한 경우 사용자가 직접 클릭 할 수 없습니다. 톱니 바퀴 아이콘에서 종료 및 재부팅을 선택하면 시스템이 아무 작업도 수행하지 않습니다.

루트로 로그인하여 재부팅 명령을 실행하려고하면 "또 다른 종료가 이미 보류 중입니다"라는 대답이 있으므로 취소하려면 -c를 종료 한 다음 다시 부팅 할 수 있습니다. 사용자가 내 (또는 루트) 개입없이 원할 때마다 재부팅 할 수 있어야하기 때문에 이것은 분명히 내가 원하는 것이 아닙니다.

누구든지 내 목표를 달성하는 데 도움을 줄 수 있습니까?

대단히 감사합니다

안드레아


요구 사항이 상충되는 것 같습니다.
유기농 대리석

답변:


1

무인 업그레이드가 컴퓨터를 다시 시작하지 못하도록 중지

업데이트를 다시 시작해야하는 경우 지금 오전 2시에 컴퓨터를 다시 시작하도록 무인 업그레이드가 설정되어 있습니다. 이 단계는이 동작을 중지합니다.

단계 : 파일 편집/etc/apt/apt.conf.d/50unattended-upgrades

파일 내부에서 다음 행을 찾으십시오.

unattended-Upgrade::Automatic-Reboot "true";

그리고 다음과 같이 보이게하십시오 :

Unattended-Upgrade::Automatic-Reboot "false";

bash 스크립트를 작성하여 재시작이 필요한지 확인하고 필요한 경우 수행하십시오.

아래 스크립트는 파일 reboot-required이 존재 하는지 확인하고 존재하면 컴퓨터를 즉시 재부팅합니다. 이 파일을 호출 해 봅시다 reboot_if_needed.sh.

#!/bin/bash
if [ -f /var/run/reboot-required ]; then
        echo $(date) Sytem restart required by: $(cat /var/run/reboot-required.pkgs)
        /sbin/reboot now
fi

이 파일을 다른 이름으로 저장 /opt/bin/reboot_if_needed.sh

이 파일을 실행 가능하게 만드십시오.

sudo chmod + x /opt/bin/reboot_if_needed.sh

설명

스크립트가 실행되고 파일 var/run/reboot-required이 존재하면 로그 파일에 캡처되는 일부 텍스트가 출력됩니다 /var/log/reboot_history.log. 그런 다음 시스템이 다시 시작됩니다.

reboot_if_needed.sh매일 밤 2:00에 스케줄

관리자 권한으로 스크립트를 실행하려고합니다. 그래서 우리는을 사용 sudo합니다. Ctrl+ Alt+ 를 눌러 터미널을 열고 다음을 T입력하십시오.

sudo crontab -e

이 명령은 루트 사용자를위한 crontab 파일을 열거 나 비어있는 새 파일을 만듭니다. 파일 끝에 다음 줄을 추가하십시오.

0 02 * * * /opt/bin/reboot_if_needed.sh >> /var/log/reboot_history.log

nano텍스트 파일 편집기로 사용 하는 경우 Ctrl+ 를 눌러 편집기를 종료하십시오 X. 편집기에 변경 사항을 저장하라는 메시지가 표시됩니다. 를 눌러 Y다음과 누르면 Enter기본 파일 이름을 선택합니다.

설명

에 추가 된 행 crontabreboot_if_needed.sh매일 밤 2시에 스크립트를 실행합니다. 는 >>받는 출력 리디렉션 /var/log/reboot_history.log파일을. 이 파일은 crontab스크립트를 처음 실행할 때 생성 됩니다.

crontab 사용 방법 은 https://help.ubuntu.com/community/CronHowto 를 참조 하십시오.

왜 이것이 작동합니까?

무인 업그레이드는 지연으로 재시작을 예약하는 것 같습니다. 예를 들면 다음과 같습니다.

sudo shutdown -r 02:00

위 명령은 재시작을 오전 2시에 예약합니다. 이러한 명령이 적용되면 "다른 시스템 종료가 이미 보류 중입니다"라는 메시지가 나타납니다.

crontab을 사용하여 shutdown명령 내에서 예약하는 대신 오전 2시에 다시 시작 프로세스를 시작합니다 . 따라서 무인 업그레이드가 실행 된 후에는 대기중인 시스템 종료가 없습니다. 모든 사용자는 컴퓨터를 재부팅 할 수 있습니다.

사용자가 컴퓨터 /var/run/reboot-required를 다시 부팅하면 더 이상 재부팅이 필요하지 않으므로 파일 이 종료되면 파일 이 시스템에 의해 삭제됩니다. 스크립트에 의해 오전 2시에 컴퓨터가 다시 시작되지 않습니다.

도움이 되었기를 바랍니다


감사합니다. 첫 번째 의견은 나를 cron 스크립트 아이디어로 이끌어 주며 자세한 설명은 훌륭합니다. 나는 그것을 시도하고 결과를 여기에보고 할 것입니다. 감사합니다!
Angus73

천만에요. 나는 그것을 시험해 보지 않았다. 따라서 세부 사항에 약간의 오차가있을 수 있습니다. 문제가 있으면 의견에 알려주십시오. 다른 사람들을 도울 수 있도록 답변을 수정하겠습니다.
user68186

예상대로 완벽하게 작동하는지 확인할 수 있습니다. 다시 감사합니다!
Angus73

각 자동 재시작에 대한 로깅을 추가했습니다. 로그 파일에는 다시 시작해야하는 업데이트 된 패키지 목록이 포함됩니다.
user68186

고마워요, 훌륭합니다 :-) 왜 /opt/bin/reboot_if_needed.sh/opt/bin/reboot_if_needed.sh가 아닌 이유를 설명해 주 시겠습니까? 나는 백틱이 무엇을 의미하는지 알고 있지만 여기서 왜 사용하는지는 알지 못합니다. 또는 적어도 그것들을 사용하는 것과 사용하지 않는 것의 차이점을 발견하지 못했습니다. 감사합니다!
Angus73
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.