Como eu restauro '/ dev / log' no host systemd + rsyslog?

8

No RHEL7, systemd-journald assume muitas das responsabilidades do que já foi feito por rsyslogd . Seja por bug ou conflito entre esses dois daemons, às vezes /dev/log desaparecerá. Como resultado, os programas que dependem da chamada syslog(3) não funcionarão corretamente, incluindo, por exemplo, logger . Como posso restaurar o /dev/log socket?

    
por Otheus 17.10.2016 / 23:57

2 respostas

8

Perguntando e respondendo a minha própria pergunta, porque o Google não foi muito útil para isso.

Normalmente, com rsyslogd , o módulo imuxsock criará o soquete /dev/log sozinho, desvinculando a entrada anterior antes de criá-la. Quando rsyslogd é interrompido (possivelmente porque a reinicialização falha devido à configuração defeituosa), o rsyslogd remove /dev/log .

No entanto, espera-se que o rsyslog fornecido com RHEL7 seja usado em conjunto com systemd , e o módulo imuxsock será realmente aberto e removerá /run/systemd/journal/syslog socket. Enquanto isso, o dispositivo /dev/log é criado pelo arquivo de serviço do sistema systemd-journald.socket , que aciona journald .

Aparentemente, seja ou não $imjournal module usado, os seguintes trabalhos.

Em suma, se /dev/log desaparecer:

  1. reinicie o systemd-journald.socket:

    systemctl restart systemd-journald.socket
    
  2. depois reinicie o rsyslogd

    systemctl start rsyslogd
    

UPDATE: acredito que restart rsyslogd possa re-excluir o soquete se rsyslogd já estiver em execução.

    
por 18.10.2016 / 00:19
3

A solução systemctl restart systemd-journald.socket && systemctl restart rsyslog não funcionou para mim no Ubuntu 16.04.

Em vez disso, tive que recriar /dev/log como um link simbólico para /run/systemd/journal/dev-log :

ln -s /run/systemd/journal/dev-log /dev/log
    
por 08.03.2017 / 22:16