Come Utilizzare il Comando di coda su Linux

  • Dave McKay

    @TheGurkha

  • 28 gennaio 2020, 8:00 EDT
Fatmawati Achmad Zaenuri/

Linux tail comando visualizza dati dalla fine di un file. Si può anche visualizzare gli aggiornamenti che vengono aggiunti a un file in tempo reale. Vi mostriamo come usarlo.

Systemd ha ucciso tail?

Il comandotail mostra i dati dalla fine di un file., Di solito, nuovi dati vengono aggiunti alla fine di un file, quindi il comando tail è un modo semplice e veloce per vedere le aggiunte più recenti a un file. Può anche monitorare un file e visualizzare ogni nuova voce di testo in quel file man mano che si verificano. Questo lo rende un ottimo strumento per monitorare i file di registro.

Molte distribuzioni Linux moderne hanno adottato ilsystemd system and service manager. Questo è il primo processo eseguito, ha ID processo 1 ed è il genitore di tutti gli altri processi. Questo ruolo era gestito dal vecchio sistema init.,

Pubblicità

Insieme a questo cambiamento è venuto un nuovo formato per i file di registro di sistema. Non più creati in testo normale, sotto systemd vengono registrati in un formato binario. Per leggere questi file di registro, è necessario utilizzare l’utilitàjournactl. Il comandotail funziona con formati di testo normale. Non legge i file binari. Quindi questo significa che il comandotail è una soluzione alla ricerca di un problema? Ha ancora qualcosa da offrire?,

C’è di più nel comandotail che mostrare 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 normale. Ad esempio, i file di registro generati dalle applicazioni non hanno modificato il loro formato.

Usando tail

Passa il nome di un file atail e ti mostrerà le ultime dieci righe da quel file. I file di esempio che stiamo usando 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, usa l’opzione -n (numero di righe):

tail -n 15 word-list.txt
Advertisement

In realtà, puoi fare a meno di “-n” e basta usare un trattino “-” e il numero. Assicurarsi che non ci 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 tail 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 mostrata una piccola intestazione per ogni file in modo da sapere a quale file appartengono le linee.

Visualizzazione delle righe dall’inizio di un file

Il modificatore+ (count from the start) fa sì chetail visualizzi 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, otterrai un sacco di output inviato alla finestra del terminale. Se questo è il caso, ha senso convogliare l’output da tail in less.

tail +440 list-1.txt
Pubblicità

Puoi sfogliare il testo in modo controllato.,

Poiché ci sono 20.445 righe in questo file, questo comando è l’equivalente di usare l’opzione “-6”:

tail +20440 list-1.txt

Usando i byte con la coda

Puoi dire atail di usare gli offset in byte invece delle linee usando-c (byte) opzione. Questo potrebbe essere utile se si dispone di un file di testo formattato in record di dimensioni regolari. Si noti che un carattere di nuova riga conta come un byte., Questo comando consente di visualizzare l’ultimo 93 byte del file:

tail -c 93 list-2.txt

È possibile combinare il -c (byte) con l’opzione + (conte dall’inizio del file) modificatori, e specificare un offset in byte conteggiata dall’inizio del file:

tail -c +351053 list-e.txt

Tubazioni In coda

in Precedenza, abbiamo pipe l’output tail in less . Possiamo anche convogliare l’output da altri comandi in tail.,

Pubblicità

Per identificare i cinque file o cartelle con i tempi di modifica più vecchi, utilizzare l’opzione-t(ordina per ora di modifica) conlse convogliare l’output intail.

ls -tl | tail -5

Il comandohead elenca le righe di testo dall’inizio di un file. Possiamo combinarlo con tail per estrarre una sezione del file. Qui, stiamo usando il comandohead per estrarre le prime 200 righe da un file., Questo viene convogliato in tail, che sta estraendo le ultime dieci righe. Questo ci dà linee 191 fino alla linea 200. Cioè, le ultime dieci righe delle prime 200 righe:

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

Scomponiamolo.

Il comando ps visualizza informazioni sui processi in esecuzione. Le opzioni utilizzate sono:

  • a: Elenca tutti i processi, non solo per l’utente corrente.
  • u: Visualizza un output orientato all’utente.,
  • x: Elenca tutti i processi, compresi quelli non in esecuzione all’interno di un TTY.
Pubblicità

Il comandosort ordina l’output daps . Le opzioni che stiamo usando con sort sono:

  • n: Ordina numericamente.
  • k +4: Ordina sulla quarta colonna.

Il comandotail -5 visualizza gli ultimi cinque processi dall’output ordinato. Questi sono i cinque processi più affamati di memoria.,

Usare tail per tracciare i file in tempo reale

Tracciare nuove voci di testo che arrivano in un file-di solito un file di log—è facile contail. Passare il nome del file sulla riga di comando e utilizzare l’opzione-f (follow).

tail -f geek-1.log

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

Pubblicità

È possibile perfezionare l’output per includere solo linee di particolare rilevanza o interesse., Qui, stiamo usando grep per visualizzare solo le righe che contengono la parola “media”:

tail -f geek-1.log | grep average

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 elemento è contrassegnato con un’intestazione che indica che il file di testo è venuto da.

Il display viene aggiornato ogni volta che una nuova voce arriva in un file seguito. Per specificare il periodo di aggiornamento, utilizzare l’opzione-s (periodo di sospensione)., Questo dice a tail di attendere un certo numero di secondi, cinque in questo esempio, tra i controlli dei file.

tail -f -s 5 geek-1.log
Pubblicità

Certo, non puoi dirlo guardando uno screenshot, ma gli aggiornamenti del file avvengono una volta ogni due secondi. Le nuove voci del file vengono visualizzate nella finestra del terminale una volta ogni cinque secondi.

Quando si seguono le aggiunte di testo a più di un file, è possibile sopprimere le intestazioni che indicano da quale file di registro proviene il testo., Utilizzare l’opzione-q (quiet) per fare ciò:

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

L’output dei file viene visualizzato in una miscela di testo senza soluzione di continuità. Non vi è alcuna indicazione da quale file di registro provenga ogni voce.

tail ha ancora Valore

Sebbene l’accesso ai file di registro di sistema sia ora fornito dajournalctl,tail ha ancora molto da offrire. Ciò è particolarmente vero quando viene utilizzato in combinazione con altri comandi, piping dentro o fuori da tail.,

Advertisement

systemd potrebbe aver cambiato il panorama, ma c’è ancora un posto per le utility tradizionali che si conformano alla filosofia Unix di fare una cosa e farlo bene.

Dave McKay
Dave McKay ha usato per la prima volta i computer quando il nastro di carta punzonato era in voga, e da allora ha programmato. Dopo oltre 30 anni nel settore IT, ora è un giornalista tecnologico a tempo pieno., Durante la sua carriera, ha lavorato come programmatore freelance, manager di un team internazionale di sviluppo software, project manager di servizi IT e, più recentemente, come responsabile della protezione dei dati. Dave è un evangelista di Linux e fautore dell’open source.Leggi la Biografia completa ”

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *