Introduzione

Il comando tail visualizza l'ultima parte (10 righe per impostazione predefinita) di uno o più file o dati convogliati. Può anche essere utilizzato per monitorare le modifiche ai file in tempo reale.

Uno degli usi più comuni del comando tail è quello di guardare e analizzare log e altri file che cambiano nel tempo, di solito combinati con altri strumenti come grep.

In questo tutorial, ti mostreremo come usare il comando tail di Linux attraverso esempi pratici e spiegazioni dettagliate delle opzioni di Tail più comuni.

Sintassi del comando Tail

Prima di andare su come usare il comando tail, iniziamo esaminando la sintassi di base.

Le espressioni del comando tail assumono la seguente forma:

tail [OPTION]... [FILE]...
  • OPTION- opzioni di tail. Esamineremo le opzioni più comuni nelle prossime sezioni.
  • FILE- Zero o più nomi di file di input. Se non viene specificato FILE o quando FILE è -, tail leggerà l'input standard.

Come usare il comando Tail

Nella sua forma più semplice se usato senza alcuna opzione, il comando tail visualizzerà le ultime 10 righe.

tail filename.txt

Come visualizzare un numero specifico di linee

Utilizzare l'opzione -n( --lines) per specificare il numero di righe da mostrare:

tail -n <NUMBER> filename.txt

Puoi anche omettere la lettera n e usare solo il trattino - e il numero (senza spazi tra loro).

Per visualizzare le ultime 50 righe di un file chiamato filename.txt è necessario utilizzare:

tail -n 50 filename.txt

L'esempio seguente mostrerà lo stesso risultato dei comandi precedenti:

tail -50 filename.txt

Come visualizzare un numero specifico di byte

Per mostrare un numero specifico di byte utilizzare l'opzione -c( --bytes).

tail -c <NUMBER> filename.txt

Ad esempio, per visualizzare gli ultimi 500 byte di dati dal file denominato filename.txt, utilizzare:

tail -c 500 filename.txt

È inoltre possibile utilizzare un suffisso moltiplicatore dopo il numero per specificare il numero di byte da visualizzare. b lo moltiplica per 512, kB lo moltiplica per 1000, K lo moltiplica per 1024, MB lo moltiplica per 1000000, M lo moltiplica per 1048576 e così via.

Il seguente comando visualizzerà gli ultimi due kilobyte (2048) del file filename.txt:

tail -c 2k filename.txt

Come guardare un file per le modifiche

Per monitorare un file per le modifiche utilizzare l' opzione -f( --follow):

tail -f filename.txt

Questa opzione è particolarmente utile per il monitoraggio dei file di registro. Ad esempio, per visualizzare le ultime 10 righe del file /var/log/nginx/error.log e monitorare il file per gli aggiornamenti, utilizzare:

tail -f /var/log/nginx/error.log

Per interrompere il comando tail mentre sta guardando un file, premere Ctrl+C.

Per continuare a monitorare il file quando viene ricreato, utilizzare l'opzione -F.

tail -F filename.txt

Questa opzione è utile in situazioni in cui il comando tail segue un file di registro che ruota. Se utilizzato con l'opzione -F, il comando tail riaprirà il file non appena sarà nuovamente disponibile.

Come visualizzare più file

Se vengono forniti più file come input per il comando tail, verranno visualizzate le ultime dieci righe di ciascun file.

tail filename1.txt filename2.txt

È possibile utilizzare le stesse opzioni di quando si visualizza un singolo file.

Questo esempio mostra le ultime 20 righe dei file filename1.txt e filename2.txt:

tail -n 20 filename1.txt filename2.txt

Come usare Tail con altri comandi

Il comando tail può essere utilizzato in combinazione con altri comandi reindirizzando l'output standard da/verso altre utility mediante pipe.

Ad esempio, per monitorare il file di registro di accesso di Apache e visualizzare solo quelle righe che contengono l'indirizzo IP 192.168.11.11 useresti:

tail -f /var/log/apache2/access.log | grep 192.168.11.11

Il seguente comando ps visualizzerà i primi dieci processi in esecuzione ordinati per utilizzo della CPU:

ps aux | sort -nk +3 | tail -5

Conclusione

Ormai dovresti avere una buona conoscenza di come usare il comando tail di Linux. È complementare al comando head che stampa le prime righe di un file sul terminale.