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.