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

Я пытаюсь понять, как происходит автоматическое обновление через пакет без обслуживания. Ниже описывается то, что я нашел в новой установке 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 - это скрипт используется для автоматического обновления обновлений для автоматического обновления. Я хотел бы знать, почему оба cron и systemd выполняют его?

1
задан 18 January 2018 в 15:43

3 ответа

Два задания бесплатны, и связь описана в задании 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 и более старых системах (non-Systemd) система работает совершенно по-другому: cronjob запускает запуск без присмотра-обновления.

2
ответ дан 22 May 2018 в 15:28
  • 1
    Не могли бы вы объяснить, как cronjob запускает таймер systemd? Я понял, что cronjob запускает скрипт /usr/lib/apt/apt.systemd.daily напрямую. – Nilushan 18 January 2018 в 00:06
  • 2
    Ну, это довольно ясно, если вы читаете скрипты. /usr/lib/apt/apt.systemd.daily проверяет, работает ли таймер systemd, и при необходимости сбрасывает его. Есть ли что-то конкретное, что вы ищете? – user535733 18 January 2018 в 00:58
  • 3
    Я пытался понять, в какое время происходят автоматические обновления, и был смущен, потому что я думал, что и cronjob, и systemd выполняют его. Но я думаю, что сейчас понимаю. В версии 16.04 и более поздних версиях автоматические обновления выполняются через таймер systemd в произвольное время. Когда запущен cronjob, он только сбрасывает этот таймер, если он был остановлен. Таким образом, время автономных обновлений запускается таймером systemd. У меня все получилось? – Nilushan 18 January 2018 в 08:16
  • 4
    Это действительно точно. Используйте systemctl list-timers, чтобы увидеть, когда запланированы следующие таймеры apt-daily и apt-daily-upgrade. – user535733 18 January 2018 в 16:52

Два задания бесплатны, и связь описана в задании 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 и более старых системах (non-Systemd) система работает совершенно по-другому: cronjob запускает запуск без присмотра-обновления.

3
ответ дан 17 July 2018 в 22:46

Два задания бесплатны, и связь описана в задании 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 и более старых системах (non-Systemd) система работает совершенно по-другому: cronjob запускает запуск без присмотра-обновления.

3
ответ дан 24 July 2018 в 13:23

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

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