無人アップグレードパッケージを使用して、自動アップグレードがどのように行われるかを理解しようとしています。以下に説明するのは、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の両方がそれを実行するのですか?
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は無人アップデートの実行をトリガーします。