Eu encontrei um problema semelhante. Conforme explicado aqui , você não pode redirecionar a saída diretamente para ExecStartPre , ExecStart ou% ComandosExecStopPost - systemd interpretará os argumentos > ou >> as. A solução é executar seu comando usando sh -c .
Há também um outro problema que tive ao tentar usar o comando date no meu script systemd: %m é um código especial que se refere à ID da máquina do host atual. Portanto, para que a saída seja exibida no mês, você precisa escapar do sinal de porcentagem usando dois sinais de porcentagem ( %% ). Juntando tudo, a versão systemd dos pré e pós-scripts acima é:
# Date format same as (new Date()).toISOString() for consistency
ExecStartPre = /bin/sh -c 'echo "['date -u +%Y-%%m-%dT%T.%3NZ'] (sys) Starting" >> /var/log/yourapp.upstart.log'
ExecStopPost = /bin/sh -c 'rm /var/run/upstart-ghost.pid; echo "['date -u +%Y-%%m-%dT%T.%3NZ'] (sys) Stopping" >> /var/log/yourapp.upstart.log'