为什么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找到。 它使用参数update调用脚本apt.systemd.daily ,而apt.systemd.daily的systemd服务定义使用参数install调用相同的脚本。

据我了解,/ /usr/lib/apt/apt.systemd.daily是无人值守升级包使用的脚本来进行自动升级。 我想知道的是为什么cron和systemd都执行它?

这两个工作是互补的,并且在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)上,系统的工作方式完全不同:cronjob会触发一系列无人值守更新。