В Debian Stretch мы хотим загружать любые обновления и устанавливать их немедленно, потому что мы отслеживаем количество ожидающих обновлений и в настоящее время получаем уведомления о стандартных условиях.
Standard stretch загружает обновления и устанавливает их, используя:
Таймеры работают независимо в случайное время дня, поэтому между загрузкой и установкой может пройти почти 24 часа.
На основе https://superuser.com/questions/1250874/trigger-another-systemd-unit-to-start-before-timer-unit-starts, Я отключил apt-daily-upgrade.timer и изменил apt-daily-upgrade.service, добавив «Wants = apt-daily.service»
После изменения запустил демон systemctl daemon-reload.
24+ часа спустя /var/log/unattended-upgrades/unattended-upgrades.log не показывал, что автоматические обновления были запущены.
На основе Связывание пользовательских сервисов systemd, Я понял, что apt-daily.service нужно настроить для запуска apt-daily-upgrade.service, а не apt-daily-upgrade.service, настроенного для запуска после apt-daily.service.
Отказался от модификации apt-daily-upgrade.service и создал /etc/systemd/system/apt-daily.service с добавлением «Before = apt-daily-upgrade.service»:
[Unit]
Description=Daily apt download activities
Documentation=man:apt(8)
ConditionACPower=true
After=network-online.target
Wants=network-online.target
Before=apt-daily-upgrade.service
[Service]
Type=oneshot
ExecStart=/usr/lib/apt/apt.systemd.daily update
После изменения запустил демон systemctl daemon-reload.
24+ часа спустя /var/log/unattended-upgrades/unattended-upgrades.log не показывал, что автоматические обновления были запущены.
Журнал systemd показывал сообщения «Daily apt download activity», которые, как считается, показывают, что служба apt-daily.service была запущена:
# journalctl | grep 'apt download activities'
Apr 08 16:10:05 web2.iciti.av systemd[1]: Starting Daily apt download activities...
Apr 08 16:10:08 web2.iciti.av systemd[1]: Started Daily apt download activities.
...
Как мы можем достичь нашей цели, в идеале в рамках systemd?
Спасибо user228505, это сработало.
/etc/systemd/system/apt-daily.service был изменен на
[Unit]
Description=Daily apt download activities
Documentation=man:apt(8)
ConditionACPower=true
After=network-online.target
Wants=network-online.target
Before=apt-daily-upgrade.service
Wants=apt-daily-upgrade.service
[Service]
Type=oneshot
ExecStart=/usr/lib/apt/apt.systemd.daily update
Нам это нужно для запуска apt-daily-upgrade.service после завершения работы apt-daily.service (для загрузки всех пакетов перед запуском автоматических обновлений).
Добавление APT :: Periodic :: Verbose "3" в /etc/apt/apt.conf.d/02periodic показало, что он делал то, что мы хотели.
По-видимому, системное сообщение «Начатые ежедневные действия по загрузке» означает «Завершенные ежедневные действия по загрузке», потому что /usr/lib/apt/apt.systemd.daily не возвращается, пока не завершится (в отличие от большинства служебных команд, которые возвращаются, когда они демонизируют) .