Выполнить таймер сразу после другого

Я хочу, чтобы таймер 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]
...
Другие вопросы по тегам