Systemd drop-in falha ao criar o arquivo PID

4

Eu tenho um drop-in para systemd-usinado no caminho /etc/systemd/system/systemd-machined.service.d/10-machined-pid-file.conf . quando eu corro systemctl status systemd-machined eu vejo as linhas

Drop-In: /etc/systemd/system/systemd-machined.service.d
       └─10-machined-pid-file.conf

No entanto, não vejo um arquivo PID em / var / run /. Que com base no meu drop-in:

[Serivce]
PIDFile=/var/run/machined.pid

Eu acredito que não deve haver nenhum problema ao criar esse arquivo PID. Há algo que eu esteja sentindo falta?

    
por Christian Grabowski 28.11.2016 / 20:51

2 respostas

8

A configuração PIDFile= não cria um arquivo PID. Isso ainda depende do serviço em si, o mesmo que tem sido nos últimos 40 anos. Em vez disso, esta opção informa ao systemd onde encontrar um arquivo PID existente (se houver). Na maioria dos casos, não é necessário, já que o systemd manterá serviços em seus próprios cgroups e não precisará de um arquivo PID para rastreá-los. No entanto, o systemd irá deletar um arquivo PID quando o serviço for encerrado, se o serviço falhar na limpeza após ele mesmo.

Na documentação :

Takes an absolute file name pointing to the PID file of this daemon. Use of this option is recommended for services where Type= is set to forking. systemd will read the PID of the main process of the daemon after start-up of the service. systemd will not write to the file configured here, although it will remove the file after the service has shut down if it still exists.

    
por 28.11.2016 / 21:18
2

Lamentavelmente, o systemd não criará um arquivo PID para um serviço sem bifurcação, mesmo que você especifique uma linha PIDFile= no arquivo de unidade do serviço. Mas você pode trapacear com uma linha ExecStartPost= , como:

ExecStartPost=/bin/sh -c 'umask 022; pgrep YOURSERVICE > /var/run/YOURSERVICE.pid'
    
por 10.08.2018 / 19:31