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.dailyuna​​ttended-upgrades パッケージによって使用されるスクリプトは自動アップグレードを実行するためのものです。知りたいのは、なぜ cron と systemd の両方がそれを実行するのかということです。

答え1

2 つのジョブは補完的であり、その関係は 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 によって、無人更新の実行がトリガーされます。

関連情報