Isso parece que deve ser simples, mas estou me esforçando para fazê-lo funcionar. Eu estou tentando configurar um serviço systemd para saída de um programa de log (varnishncsa) que gera entradas de log da memória pode ser canalizada para cronolog. A única maneira que consegui fazer funcionar está em primeiro plano. Eu estou tentando fazer isso funcionar como um serviço systemd. O script que assume o primeiro plano é:
#!/bin/bash
/usr/bin/varnishncsa -F '%{X-Real-IP}i %l %u %t "%r" %s %b "%{Referer}i" "%{User-agent}i"' -q "ReqHeader:Host ~ '(^|\.)example\.com$'" -C |/usr/sbin/cronolog "/example/varnish_access_log.%Y-%m-%d"
A configuração do serviço systemd que estou tentando é:
[Unit]
Description=Example website Varnish Cache HTTP accelerator NCSA logging daemon
After=varnish.service
[Service]
RuntimeDirectory=varnishncsa
Type=forking
PIDFile=/run/varnishncsa/varnishncsa-example.pid
User=varnish
Group=varnish
ExecStart=/usr/local/bin/varnishncsa-example.sh
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
Que é baseado no serviço systemd fornecido para ser executado como um daemon e gravar em um arquivo (não posso executá-lo diretamente como um daemon, usando -D e -P e canalizar a saída):
[Unit]
Description=Varnish Cache HTTP accelerator NCSA logging daemon
After=varnish.service
[Service]
RuntimeDirectory=varnishncsa
Type=forking
PIDFile=/run/varnishncsa/varnishncsa.pid
User=varnish
Group=varnish
ExecStart=/usr/bin/varnishncsa -a -w /var/log/varnish/varnishncsa.log -D -P /run/varnishncsa/varnishncsa.pid
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
Eu tentei muitas opções para executá-lo em segundo plano, mas não consigo fazer nada funcionar, e não consigo encontrar nada on-line que lide com essa situação especificamente. Provavelmente porque o systemd ainda é novo, ou outros fazendo isso têm mais ideia do que estão fazendo!
Qualquer ajuda muito apreciada.