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'