Solo por diversión:
¿hay alguna forma de monitorear / capturar / volcar lo que se está escribiendo /dev/null
?
En Debian o FreeBSD, si es importante, cualquier otra solución específica del sistema operativo también es bienvenida.
Solo por diversión:
¿hay alguna forma de monitorear / capturar / volcar lo que se está escribiendo /dev/null
?
En Debian o FreeBSD, si es importante, cualquier otra solución específica del sistema operativo también es bienvenida.
/dev/null
podría hacer un análisis del contenido de muchos mensajes capturados . No quisiera investigar yo mismo, pero me encantaría leer los resultados. (Hay muy probablemente habría algunas cuestiones éticas en la "mirando a través de la basura de la gente" en esencia, pero el concepto es interesante, no obstante.)Respuestas:
Hacer
/dev/null
una tubería con nombre es probablemente la forma más fácil. Tenga en cuenta que algunos programas (sshd
por ejemplo) actuarán de manera anormal o no se ejecutarán cuando descubran que no es un archivo especial (o pueden leerlo/dev/null
, esperando que regreseEOF
).Esto debería funcionar en todas las distribuciones de Linux y en todos los BSD principales.
fuente
tail
falla, muchos programas pueden fallar porque el búfer de la tubería está lleno./dev/null
no les va a gustar esto.No magic
es un principio rector en la filosofía de UNIX./dev/null
es mágico,mknod /dev/null c 1 3
es la fórmula mágica para invocarlo. (Y necesitas superpoderes para eso ...)Una vez descubrí por las malas que / dev / null no tiene que ser un archivo de desarrollo especial. Hace mucho tiempo, se eliminó / dev / null en un sistema Ultrix en el trabajo, por lo que la próxima vez que un programa redirigió a / dev / null, terminó siendo un archivo normal lleno de la salida de ese programa. (Creo que no era "tal archivo o directorio", lo que significaba que cuando estábamos tratando de averiguar qué estaba pasando, lo hacíamos
cat /dev/null
y nos decían lono such file or directory
que nos confundía muchísimo).Entonces, mi sugerencia sería reemplazarlo con una tubería con nombre y luego adjuntar un programa a la tubería que lo leería y lo monitorearía.
fuente
/dev/null
devolver siempre 0 bytes en un read (cat /dev/null > foo
). Tener/dev/null
un archivo regular con contenido rompería esta expectativa.Pienso en una idea en la que / dev / null puede ser un enlace simbólico a un descriptor de archivo pero con un mecanismo de agregar código para determinar que la operación es de lectura o escritura y luego, si se lee, debería leer desde / dev / actualnull creado por separado con mknod y si está escrito, tome nota del programa de invocación e intente iniciar sesión / contar para analizar los programas que usan / dev / null para escribir. Sin embargo, supongo que esto va a costar mucho en términos de rendimiento. Supongo que no es práctico ya que la mayoría de los programas de shell o código usan la redirección de todos modos. ¿Puede ser inotify podría usarse para monitorear el uso de / dev / null? o reescriba el código del núcleo que maneja los dispositivos 1: 3, compile y reinstale nuevamente, experimentable.
fuente
/dev/null
desde un demonio), ysshd
todavía me quejé y no comencé.sshd
(al menos, como está empaquetado para Debian Squeeze) se quejasshd: cannot create /dev/null
si es cualquier cosa menos la implementación más común.