A documentação indica que você pode definir StandardOutput=
e StandardError=
para o que você quiser. Eles são padronizados para o diário, mas você pode redirecioná-los para vários lugares.
Controls where file descriptor 1 (STDOUT) of the executed processes is connected to. Takes one of
inherit
,null
,tty
,journal
,syslog
,kmsg
,journal+console
,syslog+console
,kmsg+console
,socket
orfd
....
null
connects standard output to/dev/null
, i.e. everything written to it will be lost.
StandardError=
é semelhante, com uma exceção importante a como inherit
s (que também é o padrão):
Controls where file descriptor 2 (STDERR) of the executed processes is connected to. The available options are identical to those of
StandardOutput=
, with some exceptions: if set toinherit
the file descriptor used for standard output is duplicated for standard error, whilefd
operates on the error stream and will look by default for a descriptor named"stderr"
.
Então, você pode fazer isso:
[Service]
StandardOutput=null
StandardError=journal
Mas tenha em mente que você perderá a saída do script; mais importante, se houver um problema e o script gerar um erro na saída padrão, em vez de um erro padrão (como muitos shell scripts fazem), você também perderá isso. Quando algo der errado, isso causará muita frustração desnecessária.
Então, você realmente não deve fazer nada para a unidade systemd. Em vez disso, se você não quiser que o script produza sucesso, corrija o script.