Come usare il comando tail in Linux

Contenuti

Una finestra di terminale che mostra un prompt Bash su un laptop Linux in stile Ubuntu.

El Linux tail Il comando visualizza i dati dalla fine di un file. Può persino mostrare gli aggiornamenti aggiunti a un file in tempo reale. Ti mostriamo come usarlo.

Sistema Kill Tail?

il tail Il comando visualizza i dati dalla fine di un file. Generalmente, nuovi dati vengono aggiunti alla fine di un file, affinché tail Il comando è un modo semplice e veloce per vedere le aggiunte più recenti a un file. Puoi anche monitorare un file e visualizzare ogni nuova voce di testo in quel file non appena si verifica.. Questo lo rende un ottimo strumento per monitorare i file di registro..

Molte moderne distribuzioni Linux hanno adottato il systemd Responsabile Sistemi e Servizi. Questa è la prima procedura eseguita, avere ID processo 1ed è il genitore di tutti gli altri processi. Questo ruolo era gestito da anziani init sistema.

Insieme a questo cambiamento, è arrivato un nuovo formato per i file di registro di sistema. Non più creato in testo normale, Su systemd sono registrati in formato binario. Per leggi questi file di registro, deve usare il journactl utilità. il tail Il comando funziona con formati di testo normale. Non legge i file binari. Quindi, ciò significa che tail Il comando è una soluzione alla ricerca di un ostacolo? Hai ancora qualcosa da offrire?

C'è di più tail comando per mostrare gli aggiornamenti in tempo reale. E in realtà, ci sono ancora molti file di registro che non sono generati dal sistema e sono ancora creati come file di testo normale. Come esempio, file di registro generati da Applicazioni non hanno cambiato formato.

Usando la colla

Passa il nome di un file a tail e ti mostrerà le ultime dieci righe di quel file. I file di esempio che stiamo utilizzando contengono elenchi di parole ordinate. Ogni riga è numerata, quindi dovrebbe essere facile seguire gli esempi e vedere che effetto hanno le varie opzioni.

coda word-list.txt

Per visualizzare un numero diverso di righe, usa el -n (numero di righe) opzione:

coda -n 15 lista-parole.txt

In realtà, puoi fare a meno della "-n" e usare un trattino "-" e il numero. Assicurati che non ci siano spazi tra di loro. tecnicamente, questo è un modulo di comando deprecato, ma è ancora in pagina mane funziona ancora.

coda -12 lista-parole.txt

Usare tail con molti file

Puoi avere tail lavorare con molti file contemporaneamente. Basta passare i nomi dei file nella riga di comando:

coda -n 4 lista-1.txt lista-2.txt lista-3.txt

Viene visualizzata una piccola intestazione per ogni file in modo da sapere a quale file appartengono le righe.

Visualizzazione delle righe dall'inizio di un file

il + (contare dall'inizio) il modificatore fa tail mostra le righe dall'inizio di un file, a partire da un numero di riga specifico. Se il tuo file è molto lungo e scegli una riga vicino all'inizio del file, riceverai molti risultati inviati alla finestra del terminale. Se è il caso, ha senso canalizzare l'uscita di tail entro less.

coda +440 list-1.txt

Puoi sfogliare il testo in modo controllato.

Perché ci sono 20,445 righe in questo file, questo comando è simile all'utilizzo dell'opzione “-6”:

coda +20440 list-1.txt

Utilizzo di byte trascinati

Si può dire tail usare gli offset in byte invece delle linee usando il -c (byte) opzione. Questo può essere utile se hai un file di testo formattato in record di dimensioni normali. Nota che un carattere di nuova riga conta come un byte. Questo comando visualizzerà l'ultima 93 byte di file:

coda -c 93 list-2.txt

Puoi combinare il -c (byte) opzione con il + (conta dall'inizio del file) e specificare un offset in byte contati dall'inizio del file:

coda -c +351053 list-e.txt

Tubo nella coda

In precedenza, canaliamo l'uscita di tail entro less . Possiamo anche incanalare l'output di altri comandi su tail.

Per identificare i cinque file o cartelle con i tempi di modifica più vecchi, Utilizzare il -t (ordina per ora di modifica) opzione con ls e convogliare l'uscita a tail.

ls -tl | coda -5

il head comando elenca le righe di testo dall'inizio di un file. Possiamo combinare questo con tail per estrarre una sezione del file. Qui, stiamo usando il head comando per estrarre il primo 200 righe di un file. Questo è incanalato a tail, che estrae le ultime dieci righe. Questo ci dà le linee 191 fino alla linea 200. In altre parole, le ultime dieci righe della prima 200 Linee:

testa -n 200 list-1.txt | coda -10

Questo comando elenca i primi cinque processi che consumano memoria.

ps a | sort -nk +4 | coda -5

Analizziamolo.

il ps comando visualizza informazioni sui processi in esecuzione. Le alternative utilizzate sono:

  • un: Elenca tutti i processi, non solo per l'utente attuale.
  • tuo: Visualizza un output orientato all'utente.
  • X: Elenca tutti i processi, compresi quelli che non vengono eseguiti all'interno di un TTY.

il sort comando ordina l'uscita a partire dal ps . Le alternative che stiamo usando con sort è così:

  • Nord: Ordina numericamente.
  • K +4: Ordina nella quarta colonna.

il tail -5 Il comando visualizza gli ultimi cinque processi dall'output ordinato. Questi sono i cinque processi che consumano più memoria.

Utilizzo di tail per tenere traccia dei file in tempo reale

Tieni traccia delle nuove voci di testo in arrivo in un file, generalmente un file di registro, è facile con tail. Passa il nome del file nella riga di comando e usa il -f (Continua) opzione.

tail -f geek-1.log

Man mano che ogni nuova voce di registro viene aggiunta al file di registro, tail aggiorna la sua visualizzazione nella finestra del terminale.

Puoi perfezionare l'output per includere solo righe di particolare rilevanza o interesse. Qui, stiamo usando grep per mostra solo le righe che includono la parola “Nella media”:

tail -f geek-1.log | grep nella media

Per tenere traccia delle modifiche in due o più file, passa i nomi dei file nella riga di comando:

coda -f -n 5 geek-1.log geek-2.log

Ogni voce è contrassegnata da un'intestazione che mostra da quale file proviene il testo.

Output di tail -f -n 5 geek-1.log geek-2.log

La schermata viene aggiornata ogni volta che arriva una nuova voce in un file seguito. Per specificare il periodo di aggiornamento, Utilizzare il -s (periodo di riposo). Questo dice tail aspetta qualche secondo, cinque in questo esempio, tra i controlli dei file.

coda -f -s 5 geek-1.log

È vero che non puoi dirlo guardando uno screenshot, ma gli aggiornamenti archiviare stanno accadendo una volta ogni due secondi. Sono in corso nuove voci di file visualizzato nella finestra del terminale una volta ogni cinque secondi.

Output della coda -f -s 5 geek-1.log

Quando tieni traccia delle aggiunte di testo a più di un file, puoi sopprimere le intestazioni che indicano da quale file di registro proviene il testo. Utilizzare il -q opzione (silenzioso) per fare questo:

tail -f -q geek-1.log geek-2.log

L'output dei file viene visualizzato in una perfetta combinazione di testo. Non vi è alcuna indicazione da quale file di registro provenga ciascuna voce.

la coda ha ancora valore

Anche se l'accesso ai file di registro di sistema ora lo fornisce journalctl, tail ha ancora molto da offrire. Questo è particolarmente vero se usato insieme ad altri comandi, entrare o uscire tail.

systemd avrebbe potuto cambiare il paesaggio, ma c'è ancora un posto per le utility tradizionali conformi alla filosofia Unix di fare una cosa e farla bene.

impostaTimeout(funzione(){
!funzione(F,B,e,v,n,T,S)
{Se(f.fbq)Restituzione;n=f.fbq=funzione(){n.callMethod?
n.callMethod.apply(n,argomenti):n.queue.push(argomenti)};
Se(!f._fbq)f._fbq = n;n.push=n;n.loaded=!0;n.version='2.0′;
n.coda=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];
s.parentNode.insertBefore(T,S) } (window, documento,'copione',
'https://connect.facebook.net/en_US/fbevents.js');
fbq('dentro', '335401813750447');
fbq('traccia', 'Visualizzazione della pagina');
},3000);

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.