redireciona os logs de serviço do systemd para o arquivo

2

Eu estava tentando rodar o flume no Ubuntu 16.04 como serviço systemd e seguir em /etc/systemd/system/flume-ng.service

[Unit]
Description=Apache Flume

[Service]
ExecStart=/usr/bin/nohup /opt/flume/current/bin/flume-ng agent -c /etc/flume-ng/conf -f /etc/flume-ng/conf/flume.conf --name a1 &
ExecStop=/opt/flume/current/bin/flume-ng agent stop

[Install]
WantedBy=multi-user.target

Eu tentei adicionar as seguintes linhas

StandardOutput=/var/log/flume-ng/log1.log
StandardError=/var/log/flume-ng/log2.log   

que não funcionou para mim.  Eu corri systemctl daemon-reload e systemctl restart flume-ng

alguém sabe como isso funciona?

    
por user3579198 07.11.2016 / 20:02

2 respostas

6

ExecStart=/usr/bin/nohup …

Isso está errado. Remova. Este serviço não está sendo executado em uma sessão de login interativo. Não há terminal de controle, ou líder de sessão, para enviar um sinal de desligamento a ele em primeiro lugar.

ExecStart=… &

Isso está errado. Remova. Isso não é script de shell. & não tem nenhum significado especial e, em qualquer caso, seria o caminho errado para iniciar um serviço.

StandardOutput=/var/log/flume-ng/log1.log
StandardError=/var/log/flume-ng/log2.log

Estes estão errados. Não use isso. O systemd já envia a saída padrão e o erro do (s) processo (s) do serviço para o seu diário, sem quaisquer configurações na unidade de serviço. Você pode visualizá-lo com

journalctl -e -u flume-ng.service
    
por 07.11.2016 / 20:44