não pode gravar no diário do systemd

5

para resumir: quero escrever no diário systemd de um script.

printf "%s\n%s\n%s\n" CODE_FILE=/etc/zsh/zprofile CODE_LINE=31 MESSAGE="could not read /etc/dircolors" | logger --journald 

não funciona. Quando executo o código exato (ou qualquer outra variante com impressão, etc.), nada acontece no diário ( journalctl --full --all --no-pager -n 10 ).

O que está errado aqui?

    
por toogley 03.10.2015 / 22:16

2 respostas

7

Use systemd-cat . Ele conecta uma saída de pipeline ou programa com o diário.

Exemplo:

printf "Write text to the journal" | systemd-cat

Resultado:

journalctl -xn
[..]
Apr 12 13:37:00 servername [31509]: Write text to the journal

Se você quiser identificar a ferramenta de registro, poderá adicionar o - t opção:

printf "Write text to the journal" | systemd-cat -t yourIdentifier
journalctl -xn
Apr 12 13:37:00 servername yourIdentifier[31833]: Write text to the journal

Editar: Para mostrar mensagens apenas para o identificador de syslog especificado, use a opção -t:

journalctl -t yourIdentifier

Esse parâmetro pode ser especificado várias vezes.

    
por 12.04.2016 / 10:35
2

| systemd-cat não funcionará se:

  • o script está sendo executado diretamente pelo systemd e
  • o script foi redirecionado para stdout / stderr ( exec 1>>$LOGFILE )

Isso ainda é verdade mesmo se você | tee systemd-cat .

Nesse caso, a melhor ação é revertê-lo:

  • remover o redirecionamento da stdout
  • faça suas chamadas printf executarem o | tee -a $LOGFILE
por 17.05.2018 / 10:40