Понимание systemd включения/запуска с таймерамиLinux

Anonymous
Понимание systemd включения/запуска с таймерами

Сообщение Anonymous »

Я не могу уложить в голове это. У меня есть этот таймер:
my-service.timer

Код: Выделить всё

[Unit]
Description=Runs my-service
After=network-online.target

[Timer]
OnCalendar=*:0/5
Persistent=true

[Install]
WantedBy=multi-user.target
И соответствующий сервис:
my-service.service

Код: Выделить всё

[Unit]
Description=Executes a service

[Service]
ExecStart=/some/fancy/bash/script.sh
Restart=no
Эти файлы помещаются в /etc/systemd/system после развертывания приложения, перезаписывающего и существующую конфигурацию.
Что теперь нужно ли мне сделать, чтобы служба запускалась в указанный календарный интервал времени без перезагрузки системы?
Что я пробовал:

Код: Выделить всё

systemctl reenable --now my-service.timer
  • Мало что делает, включает службу, но не переводит ее в активное состояние. Я подумал, что этого должно быть достаточно, чтобы запустить таймер:

Код: Выделить всё

(base) $ status my-service.timer
○ my-service.timer - Runs my-service
Loaded: loaded (/etc/systemd/system/my-service.timer; enabled; vendor preset: disabled)
Active: inactive (dead)
Trigger: n/a
Triggers: ● my-service.service
Значит, сервис все еще мертв. Тогда я подумал, что проблема может быть в том, что служебный файл не включен. Поэтому я включил служебный файл, используя

Код: Выделить всё

systemctl enable my-service.service
Это сделало мой блок зеленым в выводе статуса таймера. Однако это все еще не сработало.
Я попробовал

Код: Выделить всё

systemctl start my-service.timer
И, наконец, это сработало: таймер теперь запускает служебный файл! Но я действительно не понимаю, какие шаги действительно необходимы, чтобы все заработало? Ответы на следующие вопросы помогут мне начать работу:
Вопросы:
  • Нужен ли таймер быть запущен для запуска выполнения служебного файла?
  • Почему systemctl не включается повторно --now my-service.timer запускает таймер (что, как я думал, так и будет) с флагом --now).
  • Нужно ли а) включать служебный файл, который запускается только соответствующим таймером, б) запускать или в) ничего из вышеперечисленного?
  • Нужно ли мне использовать systemctl deamon -reload после того, как я заменил старые файлы модулей/таймера потенциально новыми/обновленными файлами? Или достаточно просто выполнить systemctl reenable или systemctl restart (что это?).


Подробнее здесь: https://stackoverflow.com/questions/792 ... ith-timers

Вернуться в «Linux»