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

Почему 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 выполняют его?

решение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 просто запускает таймер systemd, если по какой-то причине он был остановлен.

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

Связанный контент