Systemd запускать службу после определенной службы
Общий вопрос: как запустить сервис system.service после того, как определенный сервис успешно запущен?
Конкретный вопрос: Как начать работу с веб-сайтом только после запуска mongodb.service? Другими словами, веб-сайт должен зависеть от mongodb.service.
Ответы
Ответ 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