web-dev-qa-db-fra.com

Pourquoi cron et systemd exécutent-ils des mises à niveau automatiques?

J'essaie de comprendre comment les mises à jour automatiques se produisent via le paquet de mises à jour sans surveillance. Ce qui est décrit ci-dessous est ce que j'ai trouvé sur une nouvelle installation d'Ubuntu 16.04.3.

/etc/cron.daily/apt-compat a une ligne exec /usr/lib/apt/apt.systemd.daily à la fin qui exécute le script apt.systemd.daily.

systemd exécute également /usr/lib/apt/apt.systemd.daily et utilise une minuterie. La définition du service systemd effectuant la mise à jour se trouve dans /lib/systemd/system/apt-daily.service. Il appelle le script apt.systemd.daily avec l'argument update tandis que la définition du service systemd dans /lib/systemd/system/apt-daily-upgrade.service appelle le même script avec l'argument install.

Si j'ai bien compris, /usr/lib/apt/apt.systemd.daily est le script utilisé par le paquet Unattended-upgrades pour effectuer les mises à niveau automatiques. Ce que j'aimerais savoir, c'est pourquoi cron et systemd l'exécutent-ils?

5
Nilushan

Les deux travaux sont complémentaires et la relation est décrite dans le travail cron (16.04 et plus récent):

# 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

Sur Ubuntu 16.04 et les systèmes plus récents, la minuterie systemd est le travail important. Il fait tout le gros du travail. La tâche cronjob existante déclenche simplement la minuterie systemd, au cas où elle aurait été arrêtée pour une raison quelconque.

Sur les systèmes Ubuntu 14.04 et antérieurs (non-Systemd), le système fonctionne très différemment: le travail cronjob déclenche une série de mises à jour sans assistance.

4
user535733