![Warum führen sowohl cron als auch systemd automatische Upgrades aus?](https://rvso.com/image/1157176/Warum%20f%C3%BChren%20sowohl%20cron%20als%20auch%20systemd%20automatische%20Upgrades%20aus%3F.png)
Ich versuche zu verstehen, wie automatische Upgrades über das Paket „unattended-upgrades“ ablaufen. Was unten beschrieben wird, habe ich bei einer Neuinstallation von Ubuntu 16.04.3 gefunden.
/etc/cron.daily/apt-compat
exec /usr/lib/apt/apt.systemd.daily
hat am Ende eine Zeile , die das Skript ausführt apt.systemd.daily
.
systemd wird ebenfalls ausgeführt /usr/lib/apt/apt.systemd.daily
und verwendet einen Timer. Die systemd-Dienstdefinition, die das Update durchführt, finden Sie in /lib/systemd/system/apt-daily.service
. Sie ruft das Skript apt.systemd.daily
mit dem Argument auf update
, während die systemd-Dienstdefinition in /lib/systemd/system/apt-daily-upgrade.service
dasselbe Skript mit dem Argument aufruft install
.
So wie ich es verstehe, /usr/lib/apt/apt.systemd.daily
wird das Skript vom Paket „unattended-upgrades“ verwendet, um die automatischen Upgrades durchzuführen. Was mich interessiert, ist, warum sowohl Cron als auch Systemd es ausführen?
Antwort1
Die beiden Jobs ergänzen sich und die Beziehung wird im Cron-Job (16.04 und neuer) beschrieben:
# 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
Unter Ubuntu 16.04 und neueren Systemen ist der systemd-Timer die wichtigste Aufgabe. Er erledigt die ganze schwere Arbeit. Der alte Cronjob löst lediglich den systemd-Timer aus, falls er aus irgendeinem Grund angehalten wurde.
Unter Ubuntu 14.04 und älteren Systemen (nicht Systemd) funktioniert das System ganz anders: Der Cronjob löst eine Reihe unbeaufsichtigter Updates aus.