Como silenciar um serviço systemd?

1

Eu criei o seguinte serviço systemd:

[Unit]
Description=ISPConfig DC Sync
After=network.target
After=mysql.service
After=nginx.service

[Service]
User=root
Group=root
Type=simple
ExecStart=/usr/local/ispconfig/server/server.sh

[Install]
WantedBy=multi-user.target

O comando (.sh) tem um loop que retorna uma mensagem informando se ele teve um erro ou foi bem-sucedido. O problema é que esse resultado é impresso no log de mensagens (/ var / log / messages). Existe uma maneira de evitar isso? (De preferência nas especificações do próprio serviço)

    
por dioo 16.03.2017 / 03:13

1 resposta

5

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 or fd.

...

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 to inherit the file descriptor used for standard output is duplicated for standard error, while fd 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.

    
por 16.03.2017 / 04:17