¿Es `tail -f` más eficiente que` less + F`?

34

Este artículo señaló algunas razones para usar less +Fmás tail -f. La mayoría de las razones son sobre las características , no por razones técnicas : less +Fpueden resaltar, buscar, navegar a través del archivo.

¿Qué hay de las razones técnicas ?

AFAIK, lessutiliza el sondeo cada segundo para actualizar el archivo, mientras que tail, según lo definido por POSIX, utiliza un bucle que duerme durante 1 segundo y copia los bytes que están disponibles. Esto es suficiente, pero POSIX también alentó la implementación para usar un método más eficiente. Al menos GNU tail usa inotify , por lo que es más eficiente.

less también mantiene el contenido del archivo en la memoria, por lo que con un archivo enorme, como unos pocos gigabytes, puede ralentizar su computadora.

Entonces, ¿hay alguna otras técnicas razones para usar tail -fsobre less +F?

Cuonglm
fuente

Respuestas:

37

Creo que ha cubierto el punto principal: less +Flee todo el archivo, mientras que en muchos sistemas tail -fsolo lee el final del archivo, e incluso en los sistemas en los que lee todo el archivo, al menos no guarda todo el archivo en memoria. Eso hace less +Fpoco práctico para archivos muy grandes. Sin embargo, puede ejecutar less -n +F, lo que hace lessque se lea solo el final del archivo, a costa de no mostrar números de línea.

Bajo el capó, entre less -n +Fy tail -f, la principal diferencia es que tailutiliza un servicio de notificación de cambio de archivo en algunas plataformas (por ejemplo, inotify en Linux), que le permite mostrar nuevos datos al instante, mientras que lesspuede demorar hasta 1 segundo para mostrar los nuevos datos. porque busca nuevos datos en un bucle y duerme entre verificaciones.

Otra diferencia entre less +Fy tail -fes que lessinvocará su filtro de entrada, pero eso generalmente no tendrá ningún impacto en los archivos de registro.

Una diferencia técnica que está a favor less +Fes que puede hacer que las líneas se trunquen en el ancho de la pantalla con la -Sopción, mientras tailque no le da más opción que mostrar la línea completa sin importar qué tan larga sea.

En cuanto a la interfaz, el uso no tiene tanta ventaja less. tail -fEs útil notar cuando algo sucede. Incluso puedes ejecutarlo en segundo plano. Si sucede algo y desea ver el archivo con más detalle, puede abrirlo lessen otro terminal.

Si desea ver múltiples archivos, el camino a seguir es multitail . Incluso para un solo archivo, el multitail tiene características ingeniosas adicionales como el filtrado y las coloraciones.

Gilles 'SO- deja de ser malvado'
fuente
Con un archivo muy grande, ¿'less -n 99.99p + F' evita que menos lea todo el archivo?
cuonglm 01 de
1
@cuonglm Ah, cierto, lo hace. Simplemente less -nes suficiente, eso hace menos uso de la estrategia de buscar para terminar y luego volver a leer.
Gilles 'SO- deja de ser malvado'