Você confundiu a que After
está se referindo, After
fará com que um serviço espere por outra unidade antes de iniciar. Seu Wanted-By=suspend.target
e After=suspend.target
se contradizem.
O Wanted-By
está declarando que bt-mouse-resume.service
é uma parte de suspend.target
, mas o After
está afirmando que bt-mouse-resume.service
deve aguardar até que suspend.target
seja concluído. Os serviços não devem fazer parte de um alvo e esperar pelo alvo antes de começar. Isso também significa que você está configurando seu serviço para ser executado quando suspend.target
for iniciado, e não quando for concluído.
O que você realmente está procurando é uma maneira de executar algo ao parar suspend.target
, então, vou mostrar uma parte muito importante de systemd
:
Note that when two units with an ordering dependency between them are shut down, the inverse of the start-up order is applied.
Então você diz que seu bt-mouse-suspend.service
está funcionando corretamente. Por causa de seu Wanted-By=sleep.target
, quando sleep.target
é iniciado, seu serviço é executado. Por outro lado, quando sleep.target
for interrompido, bt-mouse-suspend.service
também será interrompido. Você não deve exigir o campo Before
neste serviço, você já está fazendo do seu serviço uma ação desse alvo.
Portanto, se você quiser executar /usr/bin/hciattach -s 152000 /dev/ttyS1 billionton
ao sair de sleep.target
, crie ExecStop
para bt-mouse-suspend.service
.
Também recomendo mais algumas leituras sobre como o systemd
funciona, ou seja, dê uma olhada em:
Além disso, seus dois serviços segmentam suspend.target
e sleep.target
. Obviamente, você deve usar o alvo que realmente estiver interessado, mas provavelmente está procurando apenas suspend.target
.