Как правильно отключить системный таймер?

18

Я успешно перенес несколько своих рабочих мест в systemd. Я следовал некоторым руководствам и принял стандартный подход к созданию 3 файлов:

myjob.timer - systemd timer unit
myjob.service - systemd service unit
myjob.sh

Как вы, вероятно, можете догадаться, в определенный момент запускается myjob.timer, который запускает myjob.service, который, в свою очередь, выполняет myjob.sh.

У меня одинаковые настройки для всех моих таймеров, и теперь, когда я вижу, что все работает нормально, я хочу отключить myjob.timer, который является просто тестером.

Я просто делаю:

systemctl --user disable myjob.timer

или я тоже должен сделать:

systemctl --user disable myjob.service

Как правильно поступить? Я довольно новичок в systemd, поэтому я хотел бы научиться делать вещи правильно. Я предполагаю, что правильно отключить оба устройства, чтобы система работала без багажа.

bitofagoob
источник

Ответы:

18

если myjob.serviceнет [Install]блока, то достаточно просто отключить таймер. Таймер был единственным , кто запускал .serviceфайл, поэтому при .timerотключении ничего не запустит .serviceфайл.

Также не забудьте запустить systemctl --user stop myjob.timer. Отключение таймера предотвращает его запуск при следующей загрузке, но не останавливает текущий таймер.

Марк Стосберг
источник
У меня есть блок [Install] в каждом из моих блоков таймера. В нем есть одна запись: «WantedBy = default.target». Я получил это из руководств, которым я следовал. Могу ли я просто полностью избавиться от блока [Install]?
bitofagoob
1
OK. Я прочитал о разделе [Install], и я думаю, что WantedBy = default.target как раз для того, чтобы гарантировать, что устройство, когда оно включено, будет приведено в действие во время любого обычного сеанса загрузки (многопользовательского или графического). Я приму совет Марка Стосберга и отключу только таймер. Я также отмечу его ответ как решение. Ура Марк!
bitofagoob
2
Вам нужен раздел [Install] на ваших устройствах таймера, чтобы они запускались при загрузке. Обычно WantedBy=timers.target. [Install]Раздел для службы нужен только в том случае, если вы хотите, чтобы служба запускалась во время загрузки, что, как вам кажется, не нужно в этом случае.
Марк Стосберг
1
Благодарю. Я удалил раздел [Install] из сервисного блока и изменил раздел [Install] в моем таймере на WantedBy = timers.target.
bitofagoob