为什么cron和systemd都执行自动升级?

Nil*_*sta 5 cron unattended-upgrades systemd 16.04

我试图了解如何通过无人值守升级包进行自动升级。下面描述的是我在全新安装的 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 都执行它?

use*_*733 5

这两个作业是互补的,在 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
Run Code Online (Sandbox Code Playgroud)

在 Ubuntu 16.04 和更新的系统上,systemd 计时器是重要的工作。它完成了所有繁重的工作。旧的 cronjob 只是触发 systemd 计时器,以防它因某种原因被暂停。

在 Ubuntu 14.04 和更旧的系统(非 Systemd)上,系统的工作方式完全不同:cronjob 会触发一系列无人值守更新。