Se você tiver dois serviços que não devem ser executados ao mesmo tempo, considere adicionando um Conflicts=
entry na seção [Unit]
do seu serviço de teste:
Conflicts=
A space-separated list of unit names. Configures negative requirement dependencies. If a unit has a
Conflicts=
setting on another unit, starting the former will stop the latter and vice versa. Note that this setting is independent of and orthogonal to theAfter=
andBefore=
ordering dependencies.If a unit A that conflicts with a unit B is scheduled to be started at the same time as B, the transaction will either fail (in case both are required part of the transaction) or be modified to be fixed (in case one or both jobs are not a required part of the transaction). In the latter case, the job that is not the required will be removed, or in case both are not required, the unit that conflicts will be started and the unit that is conflicted is stopped.
Então, isso pode funcionar (não testado):
pin-sshd.service
[Unit]
Description=Pin debugging of sshd (copied from sshd.service)
After=syslog.target network.target auditd.service
Conflicts=sshd.service
[Service]
ExecStart=/path/to/pin -t somepintool.so -- /usr/sbin/sshd -D -e
[Install]
WantedBy=multi-user.target
Dessa forma, systemd
pode fazer o trabalho de garantir que você não tenha os dois serviços em execução e mostrar que é necessário parar e iniciar corretamente. A maioria dos serviços que eu vejo que usam isso tem Conflicts=shutdown.target
, então parece que é normalmente usado para garantir que os serviços terminem antes que o desligamento ocorra, mas não há nada que o impeça de usar isso para outros propósitos!