Можно ли использовать оба параметра «After=» и «Before=» для одного и того же модуля (службы) вместе в службе systemd?

Установка запускается каждый час иWants=B.service, но бежит. ЕдиницаB.serviceэто такжеType=oneshot. Требование здесь состоит в том, что их процессы никогда не должны перекрываться во время выполнения (oneshotгарантирует именно это), пока все отлично. Теперь представьте себе сценарий, когда оба и вместе бегут более часа (время между пожарами). Здесь есть две возможности:

  1. работает более часа, затем, хотя и хочет запуститься, и, вероятно, так и происходит, несмотря на это, другой экземпляр не будет запущен до тех пор, пока не завершится первый, поскольку уникальность экземпляра службы является одним из фундаментальных принципов в . Я считаю, что это будет просто в очереди. Опять же, пока все отлично, у нас нет риска перекрытия процессов во время выполнения.
  2. выполняется достаточно долго, так что , который запускается позже, также работает достаточно долго, чтобы в общей сложности превысить один час, и в результатеA.timerпожары, чтобы начать новыеAпокаBвсе еще работает. Здесь мы сталкиваемся с перекрытием процессов, потому что in уже есть.

Мой вопрос, по сути, заключается в том, действительно ли вообще иметь обаAfter=B.serviceиBefore=B.serviceвA.serviceв первую очередь? И, конечно же, решит ли это дублирующую проблему, описанную во втором варианте, как я теоретически ожидаю? Есть ли ещеsystemd-способ решения этой проблемы (например, я не хочу участвовать в раздувании файла блокировки, которое может привести к ошибкам)?

0 ответов

Другие вопросы по тегам