Почему и cron, и systemd выполняют автоматические обновления?

Я пытаюсь понять, как происходит автоматическое обновление с помощью пакета unattended-upgrades. Ниже описано то, что я нашел в новой версии Ubuntu 16.04.3.

/etc/cron.daily/apt-compat имеет строку exec /usr/lib/apt/apt.systemd.daily в конце, которая выполняет сценарий apt.systemd.daily.

systemd также выполняет /usr/lib/apt/apt.systemd.daily и использует таймер. Определение службы systemd, выполняющей обновление, можно найти в /lib/systemd/system/apt-daily.service. Он вызывает скрипт apt.systemd.daily с аргументом update, а определение службы systemd в /lib/systemd/system/apt-daily-upgrade.service вызывает тот же скрипт с аргументом install.

Как я понимаю, /usr/lib/apt/apt.systemd.daily - это скрипт, используемый пакетом unattended-upgrades для автоматического обновления. Я хотел бы знать, почему и cron, и systemd выполняют его?

5
задан 18 January 2018 в 14:43

1 ответ

Эти два задания являются бесплатными, и их связь описана в задании cron (16.04 и новее):

# Systemd systems use a systemd timer unit which is preferable to
# run. We want to randomize the apt update and unattended-upgrade
# runs as much as possible to avoid hitting the mirrors all at the
# same time. The systemd time is better at this than the fixed
# cron.daily time

В Ubuntu 16.04 и более новых системах таймер systemd является важной задачей. Это делает всю тяжелую работу. Устаревший cronjob просто запускает системный таймер на случай, если по какой-то причине он был остановлен.

В Ubuntu 14.04 и более старых системах (не-Systemd) система работает совершенно иначе: cronjob запускает запуск автоматических обновлений.

4
ответ дан 18 January 2018 в 14:43

Другие вопросы по тегам:

Похожие вопросы: