Posso usar o systemd para iniciar e parar um serviço com base na presença de um arquivo?

8

Minha configuração até agora é:

foo.path

[Path] 
PathExists=/tmp/foo.path

[Install] 
WantedBy=multi.user.target

foo.service

[Unit]
Description=Matt Test
BindsTo=foo.path

[Service]
ExecStart=/bin/sh /home/mpekar/bin/foo.sh 
PIDFile=/run/foo.pid

Isso funciona bem ao inicializar, mas o foo.service não será eliminado quando o /tmp/foo.path for removido. Existe alguma maneira de fazer o systemd fazer isso ou simplesmente não é a ferramenta apropriada para o trabalho?

    
por mpr 31.05.2016 / 23:19

1 resposta

3

Eu tentaria isso. Crie um serviço adicional usando PathChanged:

foo-stop.path

[Path] 
PathChanged=/tmp/foo.path

[Install] 
WantedBy=multi.user.target

Em seguida, crie: foo-stop.service

Faça a verificação do script "ExecStart" para ver se /tmp/foo.path foi excluído (já que o PathChanged pode disparar em outras alterações também). Se o caminho tiver sido removido, peça ao script que chame /bin/systemctl stop foo .

    
por 22.06.2016 / 18:19

Tags