2011-06-13 10 views
5

Así que estoy registrando cierta información de depuración, enviándola a stdout con lo cual la copio para una cadena. En cierto punto, el registro se realiza y la aplicación está esperando cosas, pero la salida de grep se trunca en la línea media. Entonces coincidía con una línea, pero no daba salida a toda esa línea.La salida de syslog, enviada a stdout, grepped, se está truncando en la línea media

¿Hay alguna manera de obligar a grep a enjuagarse?

Gracias.

ACTUALIZACIÓN: Parece que --line-buffer ayudará.

Respuesta

3

Creo que resolvió su problema con grep utilizando el distintivo --line-buffered. También asegúrese de que su aplicación esté limpiando su stdout después de cada línea. Si su stdout es una terminal, el buffering de línea es el predeterminado, pero cuando lo canaliza a otro programa, el valor predeterminado es usar buffering completo.

Si está canalizando datos en un programa que no tiene el distintivo --line-buffered (como uniq por ejemplo), eche un vistazo al programa stdbuf (http://www.pixelbeat.org/programming) /stdio_buffering/stdbuf-man.html) que le permite modificar las opciones de almacenamiento en búfer de cualquier programa.

Consulte http://www.pixelbeat.org/programming/stdio_buffering/ para obtener una buena visión general del problema y algunas soluciones comunes.

+0

Buen recurso vinculado. – artfulrobot

Cuestiones relacionadas