2011-05-26 14 views
53

Estoy creando una aplicación que escribe en un archivo de registro, y necesito saber cómo en Linux/Bash mostrar continuamente el archivo de registro en la pantalla (actualizando la pantalla con cada línea nueva poner en el registro).Archivo de registro de script Bash para mostrar continuamente

Por ejemplo, supongamos que quiero enviar un registro en ejecución de apache/error.log a la pantalla (terminal ssh) continuamente actualizando.

+0

http://unix.stackexchange.com/questions/45626/output-file-contents-while-they-change –

Respuesta

80

intentar el comando de la cola:

tail -f filename 
+1

vu ahora me siento como un idiota. Uso el comando tail todo el tiempo (simplemente no con el parámetro -f). hombre cola habría sido mi amigo. ¡Gracias, exactamente lo que estaba buscando! Aceptaré la respuesta cuando permita (9min) –

+0

vu esto es incluso mejor que escribir un script :) (aunque también podría ser agregado a un script) –

+2

con la opción '--follow = name' estarás asegúrese de mantener el contenido del archivo de registro visualizado incluso si el archivo ha sido rotado/recreado por un trabajo cron. –

5

ssh {remotehost} tail -n0f {logfile}

Esto le dará cero líneas inicialmente, y de forma continua imprimir nuevas líneas que aparecen en el archivo.

+0

¡excelente gracias! –

21

Otra solución es

less +F filename 

o simplemente less filename y escribiendo "F" en él (presionando cambio + f). Puede ser mejor que tail, ya que le permite cancelar la impresión continua temporal, ir hacia atrás para mirar algo y volver a activarlo con "F" (cambio + f) de nuevo

+0

Estoy tomando notas, ¡es una gran alternativa! –

+0

Además, puede truncar líneas largas ** de fábrica ** para usted con la bandera '-S', mientras le permite desplazarse hacia la izquierda/derecha a través de ellas. Superior al 'tail -f file.log | cortar ... 'método. – sevko

+0

No entiendo la combinación de teclas. Primero presione 'F' luego' Shift'? ¿O presionarlos simultáneamente? Lo intenté, pero no hizo ninguna diferencia. – becko

5

También puede:

less filename.txt 
and press 'F' 

tiene una ventaja: puede en cualquier momento CTRL-C y retroceder en el registro y comenzar a mirar nuevamente con la 'F'.

+0

Estoy tan sorprendido por los tiempos de respuesta en las preguntas, intenté responder un par de preguntas y hay muchas personas que son más rápidas en el botón de actualización aquí que yo :) Gracias por la respuesta/sugerencia también –

8

El comando de vigilancia también puede ser útil.

watch tail logfile 

Le mostraría las últimas 5 líneas del archivo de registro. Se puede extender a cualquier comando que imprima cosas en stdout.

Sí, usar tail -f es la solución tradicional, pero dependiendo de lo que esté tratando de hacer, podría funcionar mejor.

+0

más notas. Linux = un millón de formas de despellejar al mismo gato :) gracias –

Cuestiones relacionadas