我已经配置了无人值守升级来安装安全软件包,并在安装时通过邮件通知。
我注意到安装是在非常随机的时间进行的。我知道最新版本从cron.daily执行时间开始最多增加30分钟的随机延迟。
但是,我遇到的延误要比这大得多。我看到在上午9点,下午3点,12点执行无人值守的升级...日志显示的内容相同,因此不仅仅是电子邮件传递需要更长的时间。
无人值守的升级任务是cron.daily中的第一个任务,这意味着没有以前的任务具有巨大的执行时间。
有人经历过类似的事情吗?
我已经配置了无人值守升级来安装安全软件包,并在安装时通过邮件通知。
我注意到安装是在非常随机的时间进行的。我知道最新版本从cron.daily执行时间开始最多增加30分钟的随机延迟。
但是,我遇到的延误要比这大得多。我看到在上午9点,下午3点,12点执行无人值守的升级...日志显示的内容相同,因此不仅仅是电子邮件传递需要更长的时间。
无人值守的升级任务是cron.daily中的第一个任务,这意味着没有以前的任务具有巨大的执行时间。
有人经历过类似的事情吗?
Answers:
调试之后,我找到了解决方案。
此问题的根本原因在于以下事实:在Ubuntu 16.04及更高版本中,无人值守的升级使用systemd而非cron来安排更新,并且产生了巨大的随机延迟:
/lib/systemd/system/apt-daily.timer
配置有
OnCalendar=*-*-* 6,18:00
RandomizedDelaySec=12h
这意味着它将每天运行两次,分别在6:00和18:00,最多随机延迟12小时。由于这在生产环境中并不总是可以接受的,因此我不得不覆盖这些设置。
为了保持程序包配置文件不变,我在/etc/systemd/system/apt-daily.timer.d/override.conf
(Update:)中定义了我的替代项(请参阅此答案底部的编辑,以获取有关文件名和位置的更多信息,因为它似乎可能会稍作更改)。
我在那里
[Timer]
OnCalendar=
OnCalendar=06:00
RandomizedDelaySec=1h
可以在6:00进行无人值守的升级,外加最多一个小时的随机延迟。
然后,我只是使用重启了计时器systemctl restart apt-daily.timer
(最终需要重新加载守护程序)。
无人值守更新现在可以在可预测的时间运行!
编辑:似乎对于Ubuntu 18.04事情有所改变。现在应该将替代存储在其中/etc/systemd/system/apt-daily-upgrade.timer.d/override.conf
,如下所示:
[Timer]
OnCalendar=*-*-* 6:00
RandomizedDelaySec=1h
@PerlDuck在下面的注释中提到了一种使用正确的名称和位置创建覆盖文件的方法。与其手动创建文件,不如考虑运行sudo systemctl edit apt-daily.timer
https://wiki.debian.org/UnattendedUpgrades上的官方debian文档当前存在一个错误,它误导了很多人。它声称您可以通过创建一个名为的文件来覆盖升级时间
/etc/systemd/system/apt-daily-upgrade.d/override.conf
但是正确的路径是
/etc/systemd/system/apt-daily-upgrade.timer.d/override.conf
sudo systemctl edit apt-daily.timer
。这将打开带有正确的插入文件的编辑器。
我尝试了Daniel的解决方案,但升级仍在错误的时间进行。原来有两个需要的系统覆盖:
/lib/systemd/system/apt-daily.timer-用/etc/systemd/system/apt-daily.timer.d/override.conf覆盖
/lib/systemd/system/apt-daily-upgrade.timer-用/etc/systemd/system/apt-daily-upgrade.timer.d/override.conf覆盖