
Linux tail
comando visualizza i dati dalla fine di un file. Può persino visualizzare gli aggiornamenti aggiunti a un file in tempo reale. Ti mostriamo come usarlo.
Systemd Kill tail?
Il tail
Il comando mostra i dati dalla fine di un file. Di solito, nuovi dati vengono aggiunti alla fine di un file, quindi il file tail
Il comando è un modo rapido e semplice per visualizzare le aggiunte più recenti a un file. Può anche monitorare un file e visualizzare ogni nuova voce di testo in quel file nel momento in cui si verificano. Questo lo rende un ottimo strumento per monitorare i file di registro.
Molte moderne distribuzioni Linux hanno adottato il systemd
gestore di sistemi e servizi. Questo è il primo processo eseguito, ha l'ID processo 1 ed è il genitore di tutti gli altri processi. Questo ruolo era usato dai più vecchi init
sistema.
Insieme a questa modifica è arrivato un nuovo formato per i file di registro di sistema. Non più creato in testo semplice, sotto systemd
sono registrati in un formato binario. Per leggere questi file di registro, è necessario utilizzare journactl
utilità. Il tail
Il comando funziona con formati di testo semplice. Non legge i file binari. Quindi questo significa che tail
comando è una soluzione alla ricerca di un problema? Ha ancora qualcosa da offrire?
C'è di più per il tail
comando che mostra gli aggiornamenti in tempo reale. E del resto, ci sono ancora molti file di registro che non sono generati dal sistema e sono ancora creati come file di testo semplice. Ad esempio, i file di registro generati da applicazioni non hanno cambiato il loro formato.
Usando la coda
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 quale effetto hanno le varie opzioni.
tail word-list.txt
Per vedere un numero diverso di righe, utilizzare il -n
(numero di righe) opzione:
tail -n 15 word-list.txt
In realtà, puoi fare a meno di “-n” e usare solo un trattino “-” e il numero. Assicurarsi che non vi siano spazi tra di loro. Tecnicamente, questo è un modulo di comando obsoleto, ma è ancora nella pagina man e funziona ancora.
tail -12 word-list.txt
Usando la coda con più file
Puoi avere tail
lavorare con più file contemporaneamente. Basta passare i nomi dei file sulla riga di comando:
tail -n 4 list-1.txt list-2.txt list-3.txt
Viene visualizzata una piccola intestazione per ogni file in modo da sapere a quale file appartengono le linee.
Visualizzazione delle linee dall'inizio di un campo
Il +
(conta dall'inizio) il modificatore fa tail
visualizza le righe dall'inizio di un file, iniziando da un numero di riga specifico. Se il tuo file è molto lungo e scegli una riga vicino all'inizio del file, riceverai un sacco di output inviato alla finestra del terminale. In tal caso, ha senso convogliare l'output da tail
in less
.
tail +440 list-1.txt
Puoi sfogliare il testo in modo controllato.
Poiché in questo file sono presenti 20.445 righe, questo comando equivale a utilizzare l'opzione “-6”:
tail +20440 list-1.txt
Utilizzo di byte con coda
Lo puoi dire tail
per usare gli offset in byte anziché in linee usando il tasto -c
(byte) opzione. Ciò potrebbe essere utile se si dispone di un file di testo formattato in record di dimensioni normali. Si noti che un carattere di nuova riga conta come un byte. Questo comando visualizzerà gli ultimi 93 byte nel file:
tail -c 93 list-2.txt
È possibile combinare il -c
(byte) con l'opzione +
(conta dall'inizio del file) modificatore e specifica un offset in byte contato dall'inizio del file:
tail -c +351053 list-e.txt
Tubazioni nella coda
In precedenza, abbiamo convogliato l'output da tail
in less
. Possiamo anche reindirizzare l'output di altri comandi in tail
.
Per identificare i cinque file o cartelle con i tempi di modifica più vecchi, utilizzare il -t
(ordina per tempo di modifica) con ls
e convoglia l'output in tail
.
ls -tl | tail -5
Il head
Il 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 head
comando per estrarre le prime 200 righe da un file. Questo viene convogliato tail
, che sta estraendo le ultime dieci righe. Questo ci dà le linee da 191 a 200. Cioè, le ultime dieci linee delle prime 200 linee:
head -n 200 list-1.txt | tail -10
Questo comando elenca i cinque processi più affamati di memoria.
ps aux | sort -nk +4 | tail -5
Analizziamolo.
Il ps
comando visualizza informazioni sui processi in esecuzione. Le opzioni utilizzate sono:
- un': Elenca tutti i processi, non solo per l'utente corrente.
- u: Visualizza un output orientato all'utente.
- X: Elenca tutti i processi, inclusi quelli non in esecuzione all'interno di un TTY.
Il sort
il comando ordina l'output da ps
. Le opzioni che stiamo utilizzando con sort
siamo:
- n: Ordina numericamente.
- k +4: Ordina sulla quarta colonna.
Il tail -5
comando visualizza gli ultimi cinque processi dall'output ordinato. Questi sono i cinque processi più affamati di memoria.
Usando la coda per tenere traccia dei file in tempo reale
Tracciare nuove voci di testo che arrivano in un file, di solito un file di registro, è facile tail
. Passare il nome file sulla riga di comando e utilizzare il -f
(segui) 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.
È possibile perfezionare l'output per includere solo righe di particolare rilevanza o interesse. Qui stiamo usando grep
per mostrare solo le righe che includono la parola “media”:
tail -f geek-1.log | grep average
Per seguire le modifiche a due o più file, passare i nomi dei file sulla riga di comando:
tail -f -n 5 geek-1.log geek-2.log
Ogni voce è taggata con un'intestazione che mostra da quale file proviene il testo.
Il display viene aggiornato ogni volta che arriva una nuova voce in un file seguito. Per specificare il periodo di aggiornamento, utilizzare il -s
(periodo di sonno) opzione. Questo dice tail
attendere un numero di secondi, cinque in questo esempio, tra i controlli dei file.
tail -f -s 5 geek-1.log
Certo, non puoi dirlo guardando uno screenshot, ma gli aggiornamenti al file stanno accadendo una volta ogni due secondi. Le nuove voci del file sono in corso visualizzato nella finestra del terminale una volta ogni cinque secondi.
Quando si seguono le aggiunte di testo a più file, è possibile eliminare le intestazioni che indicano da quale file di registro proviene il testo. Usa il -q
(silenzioso) opzione per fare questo:
tail -f -q geek-1.log geek-2.log
L'output dei file viene visualizzato in una fusione uniforme di testo. Non vi è alcuna indicazione da quale file di registro provenga ciascuna voce.
tail ha ancora valore
Sebbene l'accesso ai file di registro di sistema sia ora fornito da journalctl
, tail
ha ancora molto da offrire. Ciò è particolarmente vero quando viene utilizzato insieme ad altri comandi, eseguendo il piping dentro o fuori tail
.
systemd
potrebbe aver cambiato il panorama, ma c'è ancora posto per le utility tradizionali conformi alla filosofia Unix di fare una cosa e farlo bene.