Подтвердить что ты не робот

Systemd запускать службу после определенной службы

Общий вопрос: как запустить сервис system.service после того, как определенный сервис успешно запущен?

Конкретный вопрос: Как начать работу с веб-сайтом только после запуска mongodb.service? Другими словами, веб-сайт должен зависеть от mongodb.service.

4b9b3361

Ответ 1

В файле .service в разделе [Unit]:

[Unit]
Description=My Website
After=syslog.target network.target mongodb.service

Важной частью является mongodb.service

Справочная информация описывает это, однако, из-за его форматирования не так ясно на первый взгляд

systemd.unit - хорошо отформатирован

systemd.unit - не так хорошо отформатирован

Ответ 2

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

Пример:

a.service
[Unit]
After=b.service

Таким образом, если оба a.service и b.service включены, системаdd закажет b.service после a.service.

Если я не ошибаюсь, спросите, как начать b.service, когда a.service начинается, даже если b.service не включен.

Директива для этого - Wants= или Requires= в разделе [Unit].

mongodb.service
[Unit]
Wants=website.service
After=website.service

Разница между Wants= и Requires= объясняется на странице руководства .unit - http://www.freedesktop.org/software/systemd/man/systemd.unit.html