Можно ли использовать оба параметра «After=» и «Before=» для одного и того же модуля (службы) вместе в службе systemd?
Установка запускается каждый час иWants=B.service
, но бежит. ЕдиницаB.service
это такжеType=oneshot
. Требование здесь состоит в том, что их процессы никогда не должны перекрываться во время выполнения (oneshot
гарантирует именно это), пока все отлично. Теперь представьте себе сценарий, когда оба и вместе бегут более часа (время между пожарами). Здесь есть две возможности:
- работает более часа, затем, хотя и хочет запуститься, и, вероятно, так и происходит, несмотря на это, другой экземпляр не будет запущен до тех пор, пока не завершится первый, поскольку уникальность экземпляра службы является одним из фундаментальных принципов в . Я считаю, что это будет просто в очереди. Опять же, пока все отлично, у нас нет риска перекрытия процессов во время выполнения.
- выполняется достаточно долго, так что , который запускается позже, также работает достаточно долго, чтобы в общей сложности превысить один час, и в результате
A.timer
пожары, чтобы начать новыеA
покаB
все еще работает. Здесь мы сталкиваемся с перекрытием процессов, потому что in уже есть.
Мой вопрос, по сути, заключается в том, действительно ли вообще иметь обаAfter=B.service
иBefore=B.service
вA.service
в первую очередь? И, конечно же, решит ли это дублирующую проблему, описанную во втором варианте, как я теоретически ожидаю? Есть ли ещеsystemd
-способ решения этой проблемы (например, я не хочу участвовать в раздувании файла блокировки, которое может привести к ошибкам)?