2012-05-22 19 views
5

Soy nuevo en el uso del comando tee.Uso del comando tee rápidamente incluso para un comando

Estoy tratando de ejecutar uno de mis programas que lleva mucho tiempo terminar pero imprime información a medida que avanza. Estoy usando 'tee' para guardar la salida en un archivo y para ver la salida en el shell (bash).

Pero el problema es tee no reenvía la salida al shell hasta el final de mi comando. ¿Hay alguna manera de hacer eso?

Estoy usando Debian y bash.

Respuesta

3

Esto realmente depende de la cantidad de salida y la implementación de cualquier comando que esté ejecutando. Ningún programa está obligado a imprimir cosas directamente al stdout o stderr y enjuagarlo todo el tiempo. Por lo tanto, aunque la mayoría de las implementaciones en tiempo de ejecución de C se enjuagan después de que se escribió una cierta cantidad de datos usando una de las rutinas de tiempo de ejecución, como printf, esto puede no ser cierto dependiendo de la implementación.

Es tee no lo muestra de inmediato, es probable que solo reciba la entrada al final de la ejecución de su comando. Es podría ser útil para mencionar qué comando exacto es.

+0

Usted mencionó un punto excelente! Me olvidé de la descarga. El comando es uno de mi propio programa C. Agregué el fflush después de mi printf. Ahora funciona. Muchas gracias por la pronta ayuda. – Rakib

+0

@Rakib Hasan: me alegro de que funcione para ti ahora. Es un comportamiento que a menudo se pasa por alto, también en varios lenguajes de scripting. – 0xC0000022L

0

Si se va a publicar su uso pudiera dar una mejor respuesta, pero como es

(for i in `seq 10`; do echo $i; sleep 1s; done) | tee ./tmp 

¿Es adecuado el uso del comando tee y parece que funciona. Reemplace la pieza antes de la tubería con su comando y debería estar listo para comenzar.

1

El problema con el que está experimentado probablemente esté relacionado con el almacenamiento en búfer. Puede echar un vistazo al comando stdbuf, que hace lo siguiente:

stdbuf - Ejecute COMMAND, con operaciones modificadas de almacenamiento en búfer para sus transmisiones estándar.