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

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

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

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

대단히 감사합니다

안드레아



답변

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

업데이트를 다시 시작해야하는 경우 지금 오전 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시에 컴퓨터가 다시 시작되지 않습니다.

도움이 되었기를 바랍니다


답변