Estou empacotando um daemon para o debian 8 e o systemd.
O daemon pode criar o arquivo PID sozinho, mas não possui permissões para gravar / executar devido ao usuário não-root. É usado para criar o arquivo PID via script sysV init antigo, mas não funciona no systemd.
Eu posso usar a solução alternativa no arquivo de serviços da seguinte forma:
Environment="PIDDIR=/var/run/mydaemon"
PermissionsStartOnly=true
ExecStartPre=/bin/mkdir -p $PIDDIR
ExecStartPre=/bin/chown -R mydaemon. $PIDDIR
Mas isso não parece certo.
Eu posso usar / tmp como $ PIDDIR, mas também parece errado.
Na verdade, a única razão pela qual eu preciso de um arquivo PID é o posttrotate do logrotate, enviando SIGUSR1 para o daemon:
[ -s /run/mydaemon.pid ] && kill -USR1 'cat /run/mydaemon.pid'
Também é possível pesquisar o pid do daemon com o pgrep, mas parece não ser confiável.
copytruncate no logrotate parece não ser a melhor opção por causa da perda de alguma parte do log.
Então, qual é o caminho certo para gerenciar arquivos PID via systemd?
E existe uma maneira de enviar sinais aleatórios para daemons via systemd?