Выполнить таймер сразу после другого
Я хочу, чтобы таймер apt-update запускался в воскресенье вечером с 4:30 до 5:30, а сразу после него — таймер apt-upgrade. У меня есть эти настройки:
cat << 'EOF' > /etc/systemd/system/apt-daily.timer
[Unit]
Description=Daily apt download activities
[Timer]
OnCalendar=Sun *-*-* 4:30:00
RandomizedDelaySec=60m
Persistent=true
[Install]
WantedBy=timers.target
EOF
cat << 'EOF' > /etc/systemd/system/apt-daily-upgrade.timer
[Unit]
Description=Daily apt upgrade and clean activities
After=apt-daily.timer
[Timer]
OnCalendar=Sun *-*-* 4:30:00
RandomizedDelaySec=60m
Persistent=true
[Install]
WantedBy=timers.target
EOF
systemctl daemon-reload
Но иногда бывает так:
# systemctl list-timers
NEXT LEFT LAST PASSED UNIT ACTIVATES
Sun 2022-01-16 04:43:35 CET 6 days left Sun 2022-01-09 21:52:31 CET 7min ago apt-daily-upgrade.timer apt-daily-upgrade.service
Sun 2022-01-16 04:53:48 CET 6 days left Sun 2022-01-09 21:52:31 CET 7min ago apt-daily.timer apt-daily.service
Systemd игнорирует параметр
After=apt-daily.timer
. Как я могу это исправить?
1 ответ
Я не думаю, что таймер может использоватьAfter
илиBefore
директивы. Таймер запускает единицу обслуживания, когда таймер истек. Служба может использовать директивы для упорядочивания зависимостей, поэтому возможны такие служебные файлы (упрощено для пояснения):
# apt-daily.service
[Unit]
Description=Daily apt download activities
[Service]
...
# apt-daily-upgrade.service
[Unit]
Description=Daily apt upgrade and clean activities
Requires=apt-daily.service
After=apt-daily.service
[Service]
...