Monitora o que está sendo enviado para / dev / null?

17

Apenas por diversão:
Existe uma maneira de monitorar / capturar / descarregar o que está sendo gravado em /dev/null ?

No Debian, ou FreeBSD, se for importante, quaisquer outras soluções específicas do SO também serão bem-vindas.

    
por Ali 17.02.2012 / 15:47

3 respostas

11

Tornar /dev/null um pipe nomeado é provavelmente a maneira mais fácil. Esteja avisado que alguns programas ( sshd , por exemplo) agem anormalmente ou não executam quando descobrem que não é um arquivo especial (ou podem ler /dev/null , esperando que ele retorne EOF ) .

# Remove special file, create FIFO and read from it
rm /dev/null && mkfifo -m622 /dev/null && tail -f /dev/null
# Remove FIFO, recreate special file
rm /dev/null && mknod -m666 /dev/null c 1 3

Isso deve funcionar em todas as distribuições Linux e em todos os principais BSDs.

    
por 17.02.2012 / 16:22
6

Uma vez eu descobri a maneira mais difícil que o / dev / null não tem para ser um arquivo especial de desenvolvimento. Há muito tempo atrás o / dev / null em um sistema Ultrix no trabalho foi deletado, então da próxima vez que um programa redirecionou para / dev / null, ele acabou sendo um arquivo normal cheio da saída daquele programa. (Eu acho que foi 'nenhum tal arquivo ou diretório', o que significava que quando estávamos tentando descobrir o que estava acontecendo, nós fazíamos cat /dev/null e nos disseram no such file or directory , o que nos confundiu.)

Então, minha sugestão seria substituí-lo por um pipe nomeado e, em seguida, anexar um programa ao pipe que o leria e monitoraria.

    
por 17.02.2012 / 16:20
1

Eu penso em uma idéia onde / dev / null pode ser um link simbólico para um descritor de arquivo mas com o mecanismo add code para determinar se a operação é ler ou escrever e, se for lida, deve realmente ler / dev / currentnull criado separadamente com o mknod e, se for escrever, anote o programa invocador e tente registrar / contar para analisar os programas que usam / dev / null para gravação. Isso vai custar muito em termos de desempenho, suponho que. Eu acho que não é prático, pois a maioria dos programas shell ou código usam o redirecionamento de qualquer maneira. Pode ser inotify poderia ser usado para monitorar o uso de / dev / null? ou reescrever o código do kernel que lida com dispositivos 1: 3, novamente compilar e reinstalar, experimentável.

    
por 18.02.2012 / 17:59