systemd: Как запустить сервис B после того, как обслуживают выполнения к завершению?

Я должен эмулировать Выскочку, "запускаются на остановленном" поведении, в котором запускается сервис B, после обслуживают выполнения к завершению, но в systemd. Как я делаю это?

Я видел ссылки на "After=" и "Before=" пункты в [Unit] раздел *.service файл, но они, кажется, заставляют сервис B запускаться после того, как сервис A был запущен. Снова, я должен ожидать, пока сервис A не работал к завершению перед стартовым сервисом B.

Я соединил тривиальный пример для проигрывания с поведением. Я поместил мой *.service файлы в /etc/systemd/system, включенный эти два сервиса и затем перезагруженный. Я ожидал видеть first.sh"... и мы отсутствуем" прежде second.sh"сон в течение 2 секунд", но я не получил тот результат, как Вы будете видеть ниже.

Я ценю Ваше руководство.

====

Вот мои сервисные файлы, сценарии, которые они вызывают, и вывод journalctl.

Вот "first.service":

[Unit]
Description=First of two services

[Service]
ExecStart=/home/steve/play/systemd/oneAfterTheOther/first.sh

[Install]
WantedBy=multi-user.target

Вот "first.sh":

#!/usr/bin/env bash
nsec=10
echo "sleep for ${nsec} seconds"
sleep ${nsec}
echo "...and we're out"

Вот "second.service":

[Unit]
Description=Second of two services
After=first.service

[Service]
ExecStart=/home/steve/play/systemd/oneAfterTheOther/second.sh

[Install]
WantedBy=multi-user.target

Вот "second.sh":

#!/usr/bin/env bash
nsec=2
echo "sleep for ${nsec} seconds"
sleep ${nsec}
echo "...and we're out"

И здесь, наконец, вывод journalctl:

$ journalctl -u first -u second
-- Logs begin at Tue 2018-09-04 17:50:19 CDT, end at Tue 2018-09-04 17:56:37 CDT
Sep 04 17:50:38 sk-xenial-vm systemd[1]: Started First of two services.
Sep 04 17:50:38 sk-xenial-vm systemd[1]: Started Second of two services.
Sep 04 17:50:40 sk-xenial-vm first.sh[900]: sleep for 10 seconds
Sep 04 17:50:40 sk-xenial-vm second.sh[924]: sleep for 2 seconds
Sep 04 17:50:43 sk-xenial-vm second.sh[924]: ...and we're out
Sep 04 17:50:51 sk-xenial-vm first.sh[900]: ...and we're out
1
задан 5 September 2018 в 02:10

2 ответа

Я натолкнулся на ответ на свой собственный вопрос.

Я читал в systemd.service странице справочника о"Type="пункт, и я вижу это, когда я добавляю"Type=oneshot[Service] раздел моего *.service файлы, systemd делает то, что я хотел.

Я ожидаю, что мог использовать другой Type= настройки и получают результаты к моей симпатии, и я также ожидаю, что, вероятно, не должен на самом деле делать second.service oneshot для получения то, что я хочу; first.service тот, который я должен видеть конец. Но у меня есть путь к успеху теперь.

Так, для записи вот является работа *.service файлами и выводом journalctl для доказательства его.

Вперед!

====

First.service:

[Unit]
Description=First of two services

[Service]
ExecStart=/home/steve/play/systemd/oneAfterTheOther/first.sh
Type=oneshot

[Install]
WantedBy=multi-user.target

Second.service:

[Unit]
Description=Second of two services
After=first.service

[Service]
ExecStart=/home/steve/play/systemd/oneAfterTheOther/second.sh
Type=oneshot

[Install]
WantedBy=multi-user.target

Journalctl производят:

$ journalctl -u first -u second
-- Logs begin at Wed 2018-09-05 11:46:04 CDT, end at Wed 2018-09-05 11:51:54 CDT
Sep 05 11:46:21 sk-xenial-vm systemd[1]: Starting First of two services...
Sep 05 11:46:22 sk-xenial-vm first.sh[868]: sleep for 10 seconds
Sep 05 11:46:32 sk-xenial-vm first.sh[868]: ...and we're out
Sep 05 11:46:32 sk-xenial-vm systemd[1]: Started First of two services.
Sep 05 11:46:32 sk-xenial-vm systemd[1]: Starting Second of two services...
Sep 05 11:46:32 sk-xenial-vm second.sh[1104]: sleep for 2 seconds
Sep 05 11:46:34 sk-xenial-vm second.sh[1104]: ...and we're out
Sep 05 11:46:34 sk-xenial-vm systemd[1]: Started Second of two services.
3
ответ дан 3 December 2019 в 07:23

Вы могли использовать классический двойной амперсанд:

first.sh && second.sh

В этом примере, second.sh только выполнится, если first.sh выполнялся успешно (т.е. без ошибок).

0
ответ дан 3 December 2019 в 07:23

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

Похожие вопросы: