Examinando / dev / log

3

/dev/log é a entrada padrão para o log do sistema. No caso de uma implementação sytemd (neste caso), é um symlink para qualquer /run/systemd/journal/dev-log . Costumava ser uma extremidade receptora de um soquete unix manipulado pelo daemon syslog.

~$ echo "hello" > /dev/log 
bash: /dev/log: No such device or address
~$ fuser /dev/log
~$ ls -la /dev/log 
lrwxrwxrwx 1 root root 28 Aug 23 07:13 /dev/log -> /run/systemd/journal/dev-log

Qual é o esclarecimento do erro que aparece quando você tenta escrever nele e porque não há um processo contendo esse arquivo (saída de fuser /dev/log empty?

O registro funciona normalmente no sistema.

~$ logger test
~$ journalctl --since=-1m
-- Logs begin at Thu 2018-05-24 04:23:46 CEST, end at Thu 2018-08-23 13:07:25 CEST. --
Aug 23 13:07:24 alan-N551JM alan[12962]: test

Estendendo com sugestões de comentários

~$ sudo fuser /dev/log 
/run/systemd/journal/dev-log:     1   311
~$ ls -lL /dev/log
srw-rw-rw- 1 root root 0 Aug 23 07:13 /dev/log
    
por TheMeaningfulEngineer 23.08.2018 / 12:42

2 respostas

1

Estou resumindo os comentários para uma resposta completa. Observe que o @MarkPlotnick foi o primeiro a apontar para a solução certa.

Como você pode ver em ls -lL output, o arquivo apontado por você é um link socket , não um arquivo regular ou um pipe.

~$ ls -lL /dev/log
srw-rw-rw- 1 root root 0 Aug 23 07:13 /dev/log

Veja o primeiro caractere da saída. Esse s significa que o arquivo é um soquete.

Você não pode usar o mecanismo de redirecionamento > de bash (ou, AFIK, qualquer outro shell) para gravar em um soquete porque o shell tentará abrir o arquivo e open não suporta sockets. Veja homem aberto para detalhes.

Você tem que usar um programa que se conecta a um soquete. Veja man connect para detalhes.

Como exemplo, você pode usar netcat ou socat (consulte Como posso me comunicar com um soquete de domínio Unix através do shell no Debian Squeeze? .

Para fins de integridade, você pode usar o redirecionamento em pipes.

~$ mkfifo /tmp/fifo
~$ ls -l /tmp/fifo
prw-rw-rw- 1 root root 0 27 ago 15.04 /tmp/fifo
~$ echo "hello" > /tmp/fifo

Veja o primeiro caractere da saída ls . Esse p significa que o arquivo é um canal.

    
por 27.08.2018 / 15:18
-2

Você deve verificar / run / systemd / journal / dev-log, suas permissões e quem está usando. Você estava verificando um link.

    
por 23.08.2018 / 12:46