Ubuntu 16.04: Безперервне оновлення працює у випадковий час


15

Я налаштував без нагляду оновлення для встановлення пакетів безпеки та сповіщення поштою, коли це робиться.

Я помітив, що установка відбувається в дуже випадкові часи. Я знаю, що останні версії додали випадкову затримку до 30 хвилин, починаючи з часу виконання cron.daily.

Однак затримки, які я відчуваю, набагато більше, ніж це. Я бачу, як оновлення виконуються о 9 ранку, 3 вечора, 12 ранку ... Журнали показують те саме, тому не довга доставка електронної пошти займає більше часу.

Завдання без нагляду оновлень є першим у cron.daily, це означає, що немає попереднього завдання з величезним часом виконання.

Хтось переживав подібне?


Випадкова поведінка навмисна - згладжувати попит замість мільйонів систем, що забивають кілька дзеркал в один і той же час щодня. Звичайні користувачі настільних комп’ютерів взагалі не повинні помічати поведінку. Деякі користувачі підприємств бажають змінити свою поведінку на щось трохи передбачуваніше, і, безумовно, бажано це зробити.
користувач535733

Так, причина цього вибору зрозуміла. Просто така поведінка неприйнятна для виробничих систем. У той час, коли я задавав це запитання, така поведінка (і виправлення) ніде не було зафіксовано
daniel f.

Відповіді:


20

Після налагодження цього я знайшов рішення.

Першопричина цієї проблеми полягає в тому, що в Ubuntu 16.04 та новіших версіях оновлень без догляду використовується systemd - не cron - для планування оновлень з величезною рандомізованою затримкою:

/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:00 плюс випадкова затримка до години.

Потім я просто перезапустив таймер 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 = 5 хв", щоб увімкнути і після завантаження, але це не спрацювало. (також додано OnUnitActiveSec = 12h, щоб воно не запускалося занадто часто.)
jarno

systemd, а точніше, системний спосіб мислення, вражає знову. Можливо, мені доведеться переосмислити модернізацію до Xenial Xerus у виробництві після того, як ця дорогоцінний камінь мене покусав.
Джо

2
@daniel f. У мене є файл apt-daily.timer у / lib / systemd / system /, а також один у /etc/systemd/system/timers.target.wants/ Однак у мене немає жодного в / etc / systemd / system / себе, як ти. Чи знаєте ви, чи слід створити каталог apt-daily.timer.d та замість override.conf під / lib / systemd / system? Всі поради з вдячністю перегляньте з thx.
Первес

6

В офіційній документації Debian на 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, я відредагував сторінку Debian Wiki з вашою пропозицією
Rolf

Цю відповідь прихильнив за корисність та оновлення сторінки вікі Debian!
Ентоні Геоґеган

5

Я спробував рішення Даніеля, але оновлення все ще працювало в неправильний час. Виявились два системні зміни, які потрібні:

Використовується для завантаження

/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.

Ubuntu 16.04.4 x64
Niels Rask
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.