Ubuntu 16.04: gli aggiornamenti automatici sono eseguiti in orari casuali


15

Ho configurato aggiornamenti automatici per installare pacchetti di sicurezza e avvisare via mail quando lo fa.

Ho notato che l'installazione avviene in momenti molto casuali. So che le ultime versioni hanno aggiunto un ritardo casuale fino a 30 minuti a partire dal tempo di esecuzione cron.daily.

Tuttavia i ritardi che sto vivendo sono molto più grandi di così. Vedo che gli aggiornamenti automatici sono in esecuzione alle 9:00, 15:00, 12:00 ... I registri mostrano lo stesso, quindi non è solo la consegna della posta elettronica che richiede più tempo.

L'attività di aggiornamento automatico è la prima in cron.daily, il che significa che non esiste un'attività precedente con tempi di esecuzione enormi.

Qualcuno ha sperimentato una cosa simile?


Il comportamento casuale è deliberato: appianare la domanda invece di milioni di sistemi che martellano alcuni specchi alla stessa ora ogni giorno. Gli utenti desktop ordinari non dovrebbero assolutamente notare il comportamento. Alcuni utenti aziendali desiderano cambiare il comportamento in qualcosa di un po 'più prevedibile, e sono sicuramente i benvenuti a farlo.
user535733

Sì, il motivo di questa scelta è chiaro. È solo che questo comportamento è inaccettabile per i sistemi di produzione. Al momento in cui ho posto questa domanda, questo comportamento (e la correzione) non è stato documentato da nessuna parte
Daniel F.

Risposte:


20

Dopo aver eseguito il debug, ho trovato la soluzione.

La causa principale di questo problema risiede nel fatto che in Ubuntu 16.04 e versioni successive, gli aggiornamenti non presidiati utilizzano systemd - non cron - per pianificare gli aggiornamenti con un enorme ritardo randomizzato:

/lib/systemd/system/apt-daily.timer è configurato con

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

Ciò significa che verrà eseguito due volte al giorno, alle 6:00 e alle 18:00, con un ritardo casuale fino a 12 ore. Poiché ciò non è sempre accettabile per gli ambienti di produzione, ho dovuto ignorare queste impostazioni.

Per mantenere intatti i file di configurazione del pacchetto, ho definito la mia sostituzione in /etc/systemd/system/apt-daily.timer.d/override.conf( Aggiornamento : leggere la modifica in fondo a questa risposta per ulteriori informazioni su nome file e posizione, poiché sembra essere leggermente soggetta a modifiche).

Lì ho impostato

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

per far eseguire gli aggiornamenti non presidiati alle 6:00 più un ritardo casuale fino a un'ora.

Quindi ho semplicemente riavviato il timer con systemctl restart apt-daily.timer(eventualmente è necessario ricaricare il demone).

Gli aggiornamenti automatici ora vengono di nuovo eseguiti in tempi prevedibili!

Modifica : Sembrerebbe che per Ubuntu 18.04 le cose siano cambiate un po '. L'override ora dovrebbe essere archiviato /etc/systemd/system/apt-daily-upgrade.timer.d/override.confe simile a questo:

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

@PerlDuck ha menzionato un modo per creare un file di sostituzione con il nome e la posizione corretti in un commento qui sotto. Invece di creare manualmente un file, considera l'esecuzionesudo systemctl edit apt-daily.timer


1
Perché prima cancelli OnCalendar?
jarno,

2
Perché altrimenti aggiungerebbe un nuovo timer solo alle 6 del mattino, lasciando anche quello esistente. Poiché desidero eseguire SOLO gli aggiornamenti non presidiati alle 6, devo prima cancellare la pianificazione.
daniel f.

Ho aggiunto "OnBootSec = 5min" per abilitare anche l'esecuzione dopo l'avvio, ma non ha funzionato. (anche aggiunto OnUnitActiveSec = 12h in modo che non venga eseguito troppo frequentemente.)
jarno

systemd, o meglio, la mentalità systemd, colpisce ancora. Potrei dover ripensare l'aggiornamento a Xenial Xerus in produzione dopo che questa gemma mi ha morso.
Joe,

2
@daniel f. Ho un file apt-daily.timer in / lib / systemd / system / così come uno in /etc/systemd/system/timers.target.wants/ Tuttavia non ne ho in / etc / systemd / system / come te. Sapresti se dovrei invece creare la directory apt-daily.timer.d e override.conf in / lib / systemd / system? Tutti i consigli sono stati ringraziati con gratitudine grazie.
Purvez,

6

La documentazione ufficiale di Debian su https://wiki.debian.org/UnattendedUpgrades attualmente contiene un errore che sta fuorviando molte persone. Afferma che è possibile ignorare il tempo di aggiornamento creando un file chiamato

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

Tuttavia è il percorso corretto

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

2
Bella scoperta. IMHO la cosa più sicura è usare sudo systemctl edit apt-daily.timer. Questo aprirà un editor con il file drop-in corretto.
PerlDuck,

2
Grazie PerlDuck, ho modificato la pagina Wiki Debian con il tuo suggerimento
Rolf Wojtech,

Ho valutato questa risposta per essere utile - e per aggiornare la pagina wiki di Debian!
Anthony Geoghegan,

5

Ho provato la soluzione di Daniel ma l'aggiornamento è stato eseguito nei momenti sbagliati. Si è scoperto che sono necessarie due sostituzioni di sistema:

Utilizzato per i download

/lib/systemd/system/apt-daily.timer - esegui l'override con /etc/systemd/system/apt-daily.timer.d/override.conf

Utilizzato per l'aggiornamento

/lib/systemd/system/apt-daily-upgrade.timer - esegui l'override con /etc/systemd/system/apt-daily-upgrade.timer.d/override.conf


1
In quale versione sei? Quindi hai dovuto ignorare entrambi i timer citati contemporaneamente?
daniel f.

Ubuntu 16.04.4 x64
Niels Rask
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.