web-dev-qa-db-ja.com

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にあります。 apt.systemd.dailyのsystemdサービス定義が引数updateで同じスクリプトを呼び出している間に、引数installでスクリプト/lib/systemd/system/apt-daily-upgrade.serviceを呼び出します。

私が理解するように、/usr/lib/apt/apt.systemd.dailyは、自動アップグレードを実行するために無人アップグレードパッケージで使用されるスクリプトです。私が知りたいのは、なぜcronとsystemdの両方がそれを実行するのですか?

5
Nilushan

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は無人アップデートの実行をトリガーします。

4
user535733