우분투 16.04 : 무인 업그레이드는 임의 시간에 실행


15

보안 패키지를 설치하고 그렇게 할 때 메일로 알리도록 무인 업그레이드를 구성했습니다.

설치가 매우 임의의 시간에 발생한다는 것을 알았습니다. 최신 버전은 cron.daily 실행 시간에서 시작하여 최대 30 분의 임의 지연을 추가했습니다.

그러나 내가 겪는 지연은 그보다 훨씬 큽니다. 오전 9시, 오후 3시, 오전 12시에 무인 업그레이드가 실행되는 것을 볼 수 있습니다. 로그는 동일하게 표시되므로 이메일 전송이 오래 걸리는 것은 아닙니다.

무인 업그레이드 작업은 cron.daily의 첫 번째 작업이므로 실행 시간이 큰 이전 작업이 없습니다.

비슷한 경험을 한 사람이 있습니까?


임의의 동작은 의도적입니다. 매일 같은 시간에 몇 개의 미러를 망치는 수백만 대의 시스템 대신 수요를 완화합니다. 일반 데스크탑 사용자는 동작을 전혀 인식하지 않아야합니다. 일부 엔터프라이즈 사용자는 동작을 좀 더 예측 가능한 것으로 변경하기를 원하며 확실히 환영합니다.
user535733

예,이 선택의 이유는 분명합니다. 프로덕션 시스템에서는이 동작을 사용할 수 없습니다. 내가이 질문을했을 때,이 행동 (그리고 수정)은 어디에도 문서화되지 않았습니다
daniel f.

답변:


20

이것을 디버깅 한 후 해결책을 찾았습니다.

이 문제의 근본 원인은 Ubuntu 16.04 이상에서 무인 업그레이드가 크론이 아닌 systemd를 사용하여 무작위로 지연되는 업데이트를 예약한다는 사실에 있습니다.

/lib/systemd/system/apt-daily.timer 로 구성

OnCalendar=*-*-* 6,18:00
RandomizedDelaySec=12h

즉, 하루에 두 번, 6:00과 18:00에 최대 12 시간의 지연이 발생합니다. 이것이 프로덕션 환경에 항상 적합한 것은 아니기 때문에 이러한 설정을 재정의해야했습니다.

패키지 구성을 유지하기 위해이 훼손되지 않은 파일, 나는 내 재정의 정의 /etc/systemd/system/apt-daily.timer.d/override.conf( 업데이트 : 변화에 약간의 대상이 될 것으로 보인다으로, 파일 이름과 위치에 대한 자세한 내용은이 답변의 하단에있는 편집을 참조하십시오).

내가 설정

[Timer]
OnCalendar=
OnCalendar=06:00
RandomizedDelaySec=1h

무인 업그레이드는 6시에 실행되며 최대 1 시간의 지연이 발생합니다.

그런 다음 타이머를 다시 시작했습니다 systemctl restart apt-daily.timer(결국 데몬을 다시로드해야 함).

무인 업데이트는 이제 예측 가능한 시간에 다시 실행됩니다!

편집 : Ubuntu 18.04의 경우 약간 변경된 것처럼 보입니다. 오버라이드는 이제 /etc/systemd/system/apt-daily-upgrade.timer.d/override.conf다음과 같이 저장되어야 합니다 :

[Timer]
OnCalendar=*-*-* 6:00
RandomizedDelaySec=1h

@PerlDuck은 아래 주석에서 올바른 이름과 위치로 재정의 파일을 만드는 방법을 언급했습니다. 수동으로 파일을 만드는 대신 실행을 고려하십시오sudo systemctl edit apt-daily.timer


1
먼저 OnCalendar를 지우는 이유는 무엇입니까?
jarno

2
그렇지 않으면 오전 6시에 새 타이머 만 추가하고 기존 타이머도 그대로 둡니다. 무인 업그레이드는 6시에 실행하기를 원하므로 스케줄을 먼저 지워야합니다.
다니엘 f.

부팅 후에도 실행할 수 있도록 "OnBootSec = 5min"을 추가했지만 작동하지 않았습니다. (너무 자주 실행되지 않도록 OnUnitActiveSec = 12h를 추가했습니다.)
jarno

체계적이거나 오히려 체계화 된 사고 방식이 다시 파업합니다. 이 gem이 저를 만든 후에 프로덕션 환경에서 Xenial Xerus로 업그레이드하는 것을 다시 생각해야 할 수도 있습니다.
Joe

2
@ 다니엘 f. / lib / systemd / system /에 apt-daily.timer 파일과 /etc/systemd/system/timers.target.wants/에 파일이 있지만 / etc / systemd / system /에 파일이 없습니다. 너처럼. 대신 / lib / systemd / system 아래에 apt-daily.timer.d 디렉토리와 override.conf를 작성해야하는지 알고 있습니까? 모든 조언은 고맙게도 thx와 함께 기록됩니다.
Purvez

6

https://wiki.debian.org/UnattendedUpgrades 의 공식 데비안 문서 에는 현재 많은 사람들을 오도하는 실수가 있습니다. 라는 파일을 작성하여 업그레이드 시간을 무시할 수 있다고 주장합니다.

/etc/systemd/system/apt-daily-upgrade.d/override.conf

그러나 올바른 경로는

/etc/systemd/system/apt-daily-upgrade.timer.d/override.conf

2
좋은 발견. 가장 안전한 것은 사용하는 것입니다 sudo systemctl edit apt-daily.timer. 올바른 드롭 인 파일이있는 편집기가 열립니다.
PerlDuck

2
당신에게 PerlDuck 감사, 나는 당신의 제안에 데비안 위키 페이지를 편집
롤프 Wojtech

이 답변이 유용하고 데비안 위키 페이지를 업데이트하는 데 도움이되었습니다!
Anthony Geoghegan

5

Daniel의 솔루션을 시도했지만 업그레이드가 여전히 잘못된 시간에 실행되었습니다. 필요한 두 가지 시스템 재정의가 이루어졌습니다.

다운로드에 사용

/lib/systemd/system/apt-daily.timer-/etc/systemd/system/apt-daily.timer.d/override.conf로 재정의

업그레이드에 사용

/lib/systemd/system/apt-daily-upgrade.timer-/etc/systemd/system/apt-daily-upgrade.timer.d/override.conf로 재정의


1
어떤 버전입니까? 따라서 언급 된 두 타이머를 동시에 재정의해야 했습니까?
다니엘 f.

우분투 16.04.4 x64
Niels Rask
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.