Eu tinha um daemon que precisava de seu próprio diretório /var/run
para seu arquivo PID com permissão de gravação concedida ao usuário do daemon.
Descobri que poderia criar este diretório com estes comandos:
# mkdir /var/run/mydaemon
Então eu poderia mudar sua propriedade para o usuário/grupo sob o qual eu desejava executar o processo:
# chown myuser:myuser /var/run/mydaemon
Mas esse diretório desapareceria sempre que eu reiniciasse! Como faço para criar esse diretório toda vez que a máquina é inicializada?
Existem duas alternativas para que o systemd crie diretórios em
/var/run
//run
.Normalmente, o mais fácil é declarar um
RuntimeDirectory
no arquivo de unidade do seu serviço. Exemplo:Isso criará
/var/run/foo
uma unidade de sistema. (Observação: NÃO forneça um caminho completo, apenas o caminho sob/var/run
) Para documentos completos, consulte a entrada apropriada em systemd.exec docs .Para diretórios de tempo de execução que exigem configurações mais complexas ou diferentes ou garantias vitalícias, use
tmpfiles.d
e faça com que seu pacote solte um arquivo/usr/lib/tmpfiles.d/mydaemon.conf
:Veja os documentos tmpfiles.d completos aqui .
Eu criei um serviço que faria o diretório no início:
vim /etc/systemd/system/mydaemon-helper.service
O conteúdo de
/etc/systemd/system/mydaemon-helper.service
:Então eu comecei este serviço:
systemctl start mydaemon-helper
systemctl status mydaemon-helper
Resultado:
Por fim, disse ao sistema para carregá-lo na inicialização:
systemctl enable mydaemon-helper