SystemD Units

  • scorpiiscorpii 05.04.2025
    Известно, что таймеры systemd могут применяться в качестве альтернативы планировщику cron.
    Создал себе таймер, который запускает пользовательский сервис, каждый раз при загрузке системы и потом каждые 6 часов на работающей системе.
    Прошу проверить, может где-то перемудрил или чего-то не предусмотрел.

    refresh.service
    [Unit]
    Description="Zypper Refresh"
    After=network-online.target
    Wants=network-online.target

    [Service]
    ExecStart=/usr/bin/zypper ref

    refresh.timer
    [Unit]
    Description="Run refresh.service"

    [Timer]
    OnBootSec=5
    OnUnitActiveSec=6h
    Unit=refresh.service

    [Install]
    WantedBy=multi-user.target
  • xKDE 05.04.2025
    Кмк таймер срабатывать не должен в таком варианте. Требуется указать StopWhenUnneeded=yes, либо Type=oneshot и RemainAfterExit=true в refresh.service иначе активный процесс повторно выполнен не будет. Копайте в эту сторону.
  • scorpiiscorpii 05.04.2025
    xKDE:
    Кмк таймер срабатывать не должен в таком варианте. Требуется указать StopWhenUnneeded=yes, либо Type=oneshot и RemainAfterExit=true в refresh.service иначе активный процесс повторно выполнен не будет. Копайте в эту сторону.

    Спасибо,
    Type=oneshot
    пробовал (не работало), но то было без
    RemainAfterExit
  • xKDE 06.04.2025
    RemainAfterExit=false в Вашем случае должен дать результат)
  • scorpiiscorpii 06.04.2025
    Сутки прошли, сейчас и проверю...
    Пока работает такой вариант
    refresh.service
    [Unit]
    Description="Zypper Refresh"
    After=network-online.target
    Wants=network-online.target
    StopWhenUnneeded=yes

    [Service]
    Type=oneshot
    RemainAfterExit=yes
    ExecStart=/usr/bin/zypper ref
  • scorpiiscorpii 06.04.2025
    По крайней мере после включения ноута сработал и репы обновились, команда проверки обновлений не ругалась на необновленную базу данных и необходимость выполнения команды zypper ref от имени суперпользователя перед проверкой.
    Попробую сегодня комп не выключать (не перезагружать) и проверить через 6 часов, что сервис запустится по таймеру. в очередной раз.
  • xKDE 06.04.2025
    Вот этого достаточно для корректной работы! А для отладки "заглушку" воткните через 30 сек, чтобы по 6 часов не ждать)))
    refresh.service
    [Unit]
    Description="Zypper Refresh"
    After=network-online.target
    Wants=network-online.target

    [Service]
    Type=oneshot
    RemainAfterExit=no
    ExecStart=/usr/bin/zypper ref
  • scorpiiscorpii 06.04.2025
    xKDE:
    А для отладки "заглушку" воткните через 30 сек, чтобы по 6 часов не ждать)))

    Так-то оно так, но есть маленький нюанс. Хочется в реальной работе проверить всю систему, если раз в день прошло обновление, то потом ошибок по проверке обнов не будет, база-то свежая! Ошибки можно вычислить, - вручную запустив команду:
    zypper lu -a

    При перезагрузке или старте с нуля, таймер отрабатывает - это уже проверено. Хочется в течение дня теперь отследить.

    Ссылка (https://ibb.co/XxkrYNkm)
  • xKDE 06.04.2025
    scorpii:
    Хочется в течение дня теперь отследить.
    Если через 30 сек запускается, то и через 6 часов будет запускаться. Он уже "inactive" - значит должен стартануть.
  • scorpiiscorpii 06.04.2025
    xKDE:
    scorpii:
    Хочется в течение дня теперь отследить.
    Если через 30 сек запускается, то и через 6 часов будет запускаться. Он уже "inactive" - значит должен стартануть.

    Прогнал вручную проверку обнов, требует обновить только стороннюю репу X11:Utilities. Утром обновление не требовалось, дождусь сработки по таймеру.
  • scorpiiscorpii 06.04.2025
    Все сработало, остался вопрос использовать ли последнюю конфигурацию, предложенную Вами вот тут:
    Ссылка (https://pingvinus.ru/forum/discussion/comment/6227/#Comment_6227)

    Или оставить ту, что сработала:
    Ссылка (https://pingvinus.ru/forum/discussion/comment/6225/#Comment_6225)