Рейтинг:0

Параметр After= не работает в служебном файле systemd

флаг in

У меня есть два сценария оболочки с именами first.sh и second.sh. Содержимое файлов first.sh и second.sh приведено ниже:

    >>first.sh
    #!/бин/баш
    пока правда
    делать 
        echo Текущее время $(дата)
        спать(1)
    сделано



    >>второй.sh
    #!/бин/баш
    пока правда
    делать 
        echo Текущее время из второго скрипта $(дата)
        спать(1)
    сделано

Точно так же содержимое first.service:

[Ед. изм]
Описание=первая услуга
После=второй.сервис
[Оказание услуг]
ExecStart=/home/abanstola/first.sh

Содержимое second.service:

[Ед. изм]
Описание=Вторая служба
[Оказание услуг]
ExecStart=/home/abanstola/second.sh

Обратите внимание После=второй.сервис в первом сервисном коде. Согласно документам, первая служба не должна работать до тех пор, пока не запустится вторая служба. Но даже если я отключу или остановлю вторую службу, первая служба запустится без проблем. Что я здесь делаю неправильно?

Рейтинг:0
флаг in

Вы неправильно прочитали документацию. Цитировать:

Если единица foo.service содержит настройку До=bar.service и оба блока запускаются, бар.сервисзапуск откладывается до foo.service закончил запуск. После= является обратным до =

Выделите мной. Это действует только в том случае, если запускаются оба блока. Если вы отключите один из них, это не будет иметь никакого эффекта.

Не совсем понятно, чего вы на самом деле хотите.

Вероятно, лучший выбор:

Требуется=

Похожий на Хочет=, но объявляет более сильную зависимость требований. Зависимости этого типа также можно настроить, добавив символическую ссылку в .требует/ каталог, сопровождающий файл модуля.

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

Часть=

Настраивает зависимости, подобные Требуется=, но ограничивается остановкой и перезапуском агрегатов. Когда systemd останавливает или перезапускает перечисленные здесь модули, действие распространяется на этот модуль. Обратите внимание, что это односторонняя зависимость — изменения в этом блоке не влияют на перечисленные блоки.

Ajay Banstola avatar
флаг in
Хорошо, так что это не повлияет, если я начну их один за другим? Я не хочу добиться чего-то конкретного. Я просто хотел посмотреть на эффект "After=". Спасибо за разъяснения.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.