为什么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会触发一系列无人值守更新。