`Tail -f` è più efficiente di` less + F`?


34

Questo articolo ha sottolineato alcune ragioni per usare less +Fsopra tail -f. La maggior parte dei motivi riguarda le caratteristiche , non i motivi tecnici : less +Fpuò evidenziare, cercare, navigare tra i file.

E i motivi tecnici ?

AFAIK, lessutilizza il polling ogni secondo per aggiornare il file, mentre tail, come definito da POSIX, usa un loop che dorme per 1 secondo e copia tutti i byte disponibili. Ciò è sufficiente, ma POSIX ha anche incoraggiato l'implementazione a utilizzare un metodo più efficiente. Almeno l' uso della coda GNU inotifica , quindi è più efficiente.

less mantiene anche il contenuto del file in memoria, quindi con file di grandi dimensioni, come pochi gigabyte, può rallentare il tuo computer.

Quindi, c'è qualche altre tecniche ragioni per usare tail -fsopra less +F?

Risposte:


37

Penso che tu abbia coperto il punto principale: less +Flegge l'intero file, mentre su molti sistemi tail -flegge solo la fine del file, e anche sui sistemi in cui legge l'intero file, almeno non mantiene l'intero file in memoria. Ciò rende poco less +Fpratico per file molto grandi. È possibile, tuttavia, eseguire less -n +F, che causa la lesssola lettura della fine del file, a costo di non visualizzare i numeri di riga.

Sotto il cofano, tra less -n +Fe tail -f, la differenza principale è che tailutilizza un servizio di notifica di modifica dei file su alcune piattaforme (ad esempio, inotify su Linux), che consente di visualizzare immediatamente nuovi dati, mentre lesspotrebbe richiedere fino a 1 secondo per visualizzare i nuovi dati perché verifica la presenza di nuovi dati in un ciclo e si trova tra i controlli.

Un'altra differenza tra less +Fe tail -fè che lessinvocherà il suo filtro di input, ma che di solito non avrà alcun impatto sui file di registro.

Una differenza tecnica che è a favore less +Fè che puoi fare in modo che tronchi le linee alla larghezza dello schermo con l' -Sopzione, mentre tailnon ti dà altra scelta che visualizzare l'intera linea, non importa quanto tempo sia.

Per quanto riguarda l'interfaccia, non c'è molto vantaggio nell'utilizzare less. tail -fè utile notare quando succede qualcosa. Puoi persino eseguirlo in background. Se succede qualcosa e vuoi guardare il file in modo più dettagliato, puoi aprirlo lessin un altro terminale.

Se vuoi guardare più file, multitail è la strada da percorrere. Anche per un singolo file, il multitail ha funzionalità aggiuntive aggiuntive come il filtro e le colorazioni.


Con file molto grandi, 'less -n 99.99p + F' impedisce a meno di leggere l'intero file?
cuonglm

1
@cuonglm Ah, giusto. Basta less -nbasta, che rende meno utilizzare desidera-to-end-then-read-back strategia.
Gilles 'SO- smetti di essere malvagio'
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.