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.