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

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

我正在尝试了解如何通过 unattended-upgrades 包进行自动升级。下面描述的是我在全新安装的 Ubuntu 16.04.3 上发现的。

/etc/cron.daily/apt-compatexec /usr/lib/apt/apt.systemd.daily最后有一行执行脚本apt.systemd.daily

systemd 也会执行/usr/lib/apt/apt.systemd.daily并使用计时器。执行更新的 systemd 服务定义可在 中找到。它使用参数 调用/lib/systemd/system/apt-daily.service脚本,而 中的 systemd 服务定义使用参数 调用同一脚本。apt.systemd.dailyupdate/lib/systemd/system/apt-daily-upgrade.serviceinstall

据我了解,/usr/lib/apt/apt.systemd.dailyunattended-upgrades 包使用这个脚本进行自动升级。我想知道的是为什么 cron 和 systemd 都会执行这个脚本?

答案1

这两个作业是互补的,其关系在 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 触发无人值守更新的运行。

相关内容