La visualizzazione di file di registro di grandi dimensioni per la risoluzione dei problemi è un'attività di routine banale per amministratori di sistema e programmatori.
In questo articolo, esaminiamo come visualizzare e manipolare in modo efficace file di registro di grandi dimensioni utilizzando 10 fantastici esempi.
Esempio 1:visualizzare righe specifiche (in base al numero di riga) di un file utilizzando il comando sed
Visualizza solo le righe specifiche indicate dai numeri di riga.
Syntax: $ sed -n -e Xp -e Yp FILENAME
- sed :comando sed, che stamperà tutte le righe per impostazione predefinita.
- -n :Sopprime l'output.
- -e CMD :Comando da eseguire
- Xp:stampa il numero di riga X
- Yp:stampa il numero di riga Y
- FILENAME :nome del file da elaborare.
L'esempio menzionato di seguito stamperà le righe 120, 145, 1050 dal syslog.
$ sed -n -e 120p -e 145p -e 1050p /var/log/syslog
Nell'esempio seguente, puoi visualizzare il contenuto di var/log/cron dalla riga numero 101 a 110.
- M – Numero di riga iniziale
- N – Numero riga finale
Syntax: sed -n M,Np FILENAME $ sed -n 101,110p /var/log/cron
Esempio 2:Visualizza le prime N righe di un file usando il comando head
Questo esempio mostra solo le prime 15 righe del file /var/log/maillog. Cambia da 15 a 10 per visualizzare le prime 10 righe di un file di registro.
Syntax: head -n N FILENAME $ head -n 15 /var/log/maillog
Esempio 3:ignora le ultime N righe di un file usando il comando head
Questo esempio mostra come ignorare le ultime N righe e mostrare solo le righe rimanenti dall'inizio del file.
L'esempio seguente mostrerà tutte le righe di /var/log/secure tranne le ultime 250 righe.
Syntax: head -n -N FILENAME $ head -n -250 /var/log/secure
Esempio 4:Visualizza le ultime N righe del file usando il comando tail
Questo esempio mostra solo le ultime 50 righe del file /var/log/messages. Cambia da 50 a 100 per visualizzare le ultime 100 righe del file di registro.
Syntax: tail -n N FILENAME $ tail -n 50 /var/log/messages
Esempio 5:ignora le prime N-1 righe del file usando il comando tail
Questo esempio mostra come ignorare le prime N-1 righe e mostrare solo le righe rimanenti.
L'esempio seguente ignora le prime quattro righe di /etc/xinetd.conf, che contiene solo i commenti.
Syntax: tail -n +N FILENAME $ tail -n +5 /etc/xinetd.conf defaults { instances = 60 log_type = SYSLOG authpriv log_on_success = HOST PID log_on_failure = HOST cps = 25 30 } includedir /etc/xinetd.d
Esempio 6:visualizza il file di registro in crescita in tempo reale utilizzando il comando tail
Questo è probabilmente uno dei comandi più utilizzati dagli amministratori di sistema. Per visualizzare un file di registro in crescita e vedere solo i contenuti più recenti, usa tail -f come mostrato di seguito.
L'esempio seguente mostra il contenuto del comando /var/log/syslog in tempo reale.
Syntax: tail -f FILENAME $ tail -f /var/log/syslog
Esempio 7:visualizzare righe specifiche (in base al numero di riga) di un file utilizzando il comando head and tail
L'esempio seguente mostrerà i numeri di riga 101 – 110 del file /var/log/anaconda.log
- M – Numero di riga iniziale
- N – Numero riga finale
Syntax: cat file | tail -n +N | head -n (M-N+1) $ cat /var/log/anaconda.log | tail -n +101 | head -n 10
- cat :stampa l'intero file sullo stdout.
- tail -n +101 :ignora le righe fino al numero di riga specificato, quindi inizia a stampare le righe dopo il numero specificato.
- head -n 10 :stampa le prime 10 righe, ovvero da 101 a 110 e ignora le righe rimanenti.
Esempio 8:mostra le righe che corrispondono a uno schema e poche righe che seguono la corrispondenza.
L'esempio seguente mostra la riga che corrisponde a "Inizializzazione CPU" da /var/log/dmesg e 5 righe immediatamente dopo questa corrispondenza.
# grep "Initializing CPU#1" /var/log/dmesg Initializing CPU#1 [Note: The above shows only the line matching the pattern] # grep -A 5 "Initializing CPU#1" dmesg Initializing CPU#1 Calibrating delay using timer specific routine.. 3989.96 BogoMIPS (lpj=1994982) CPU: After generic identify, caps: bfebfbff 20100000 00000000 00000000 CPU: After vendor identify, caps: bfebfbff 20100000 00000000 00000000 monitor/mwait feature present. CPU: L1 I cache: 32K, L1 D cache: 32K [Note: The above shows the line and 5 lines after the pattern matching]
Fai riferimento al nostro articolo precedente Prendi una presa sul Grep! – 15 Esempi pratici di comandi Grep che spiegano come utilizzare il comando grep.
Come spiegato nel nostro precedente articolo sul comando grep, sono possibili le seguenti operazioni.
- Visualizzazione di linee specifiche identificate da pattern, che è la funzionalità predefinita di grep.
- Visualizzazione solo dei caratteri corrispondenti.
- Visualizzazione di N righe dopo la corrispondenza con l'opzione -A.
- Visualizzazione di N righe prima della corrispondenza con l'opzione -B.
- Visualizzazione di N righe attorno alla corrispondenza con l'opzione -C.
Esempio 9:visualizzazione di byte specifici da un file.
L'esempio seguente spiega come visualizzare i primi 40 o gli ultimi 30 byte di un file.
Visualizza i primi 40 byte dal syslog.
$ head -c40 /var/log/syslog
Visualizza gli ultimi 30 byte dal syslog.
$ tail -c30 /var/log/syslog
Esempio 10:visualizzazione di file di registro compressi
Dopo un tempo specifico, tutti i file di registro di sistema vengono ruotati e compressi. Puoi decomprimerlo al volo e reindirizzare l'output a un altro comando unix per visualizzare il file come spiegato di seguito.
Fare riferimento al nostro precedente articolo Il potere dei comandi Z:esempi Zcat, Zless, Zgrep, Zdiff
- Visualizza le prime N righe di un file compresso.
$ zcat file.gz | head -250
- Visualizza le ultime N righe di un file compresso.
$ zcat file.gz | tail -250
- Ignora le ultime N righe di un file compresso.
$ zcat file.gz | head -n -250
- Ignorando le prime N righe di un file compresso.
$ zcat file.gz | tail -n +250
- Visualizzazione delle linee che corrispondono al modello
$ zcat file.gz | grep -A2 'error'
- Visualizzazione di un particolare intervallo di righe identificato dal numero di riga.
$ zcat file.gz | sed -n -e 45p -e 52p
Se devi tornare, aggiungi questa pagina ai segnalibri su del.icio.us per un pratico riferimento.