Я создал файл службы systemd, задачей которого является не что иное, как просто вызвать другие службы, а также отключить их.
Поскольку он ничего не делает, кроме вызова других сервисов, я добавил эхо к ExecStart
и ExecStop
.
Проблема в том, что я вижу, что зависимости service <myService> start
, когда я вызываю службу <myService> , но они не останавливаются, когда я вызываю service <myService> stop
. Даже использование BindsTo
не работает.
Вот мой файл конфигурации сервиса:
[Unit]
Description=Starts the DCCA index software
Requires=mysql.service ifmFuseHandler.service
After=mysql.service ifmFuseHandler.service
BindsTo=mysql.service ifmFuseHandler.service
[Install]
WantedBy=multi-user.target
[Service]
ExecStart=/bin/sh -c "echo 'Index started'"
ExecStop=/bin/sh -c "echo 'Index stopped'"
# Execute pre and post scripts as root
PermissionsStartOnly=true
Restart=on-failure
TimeoutSec=600
Type=forking
RemainAfterExit=yes
Решение: По предложению @grawity
я создал файл .target с именем index-start.target, как показано ниже:
[Unit]
Description=Starts the DCCA index software
Requires=mysql.service ifmFuseHandler.service
After=mysql.service ifmFuseHandler.service
BindsTo=mysql.service ifmFuseHandler.service
[Install]
WantedBy=multi-user.target
И служебный файл с именем index.service:
[Unit]
Description=Starts the DCCA index software
Requires=index-start.target
After=index-start.target
[Install]
WantedBy=multi-user.target index-start.target
[Service]
ExecStart=/bin/true
ExecStop=/bin/sh -c "echo 'Index stopped'"
# Execute pre and post scripts as root
PermissionsStartOnly=true
#Restart=on-failure (Commented as does not work with type=oneshot)
TimeoutSec=600
Type=oneshot
RemainAfterExit=yes
И когда вызывается, service index start
он запускает зависимости, а service index stop
он останавливает зависимости.