Come usare journalctl per leggere i log di sistema di Linux

Contenuti

Una finestra di terminale sul desktop grafico di un laptop Linux.

Il registro di sistema di Linux è cambiato con l'introduzione di systemd. Scopri come usare il journalctl comando per leggere e filtrare i messaggi del registro di sistema.

Registro centralizzato

Non estraneo alle polemiche, il systemd L'amministratore di sistemi e servizi ha introdotto un cambiamento significativo nel modo in cui vengono raccolti i registri di sistema. I log si trovavano in posti diversi nel file system a seconda del servizio o del demone che li stava creando. Ma avevano tutti qualcosa in comune. Erano semplici file di testo.

Insieme a systemd Tutti i file di registro di sistema, boot e kernel vengono raccolti e gestiti attraverso una soluzione di logging centrale e dedicata. Il formato in cui sono memorizzati è binario. Una cosa che questo facilita è la possibilità di estrarre i dati in diversi formati, Che cosa JSON, come vedremo.

Può anche facilitare il riferimento incrociato di informazioni correlate che sono state precedentemente registrate in file di registro separati.. Perché i dati sono ora conservati in un unico diario, i dati provenienti da più fonti di interesse possono essere scelti e visualizzati in un unico elenco interlacciato di voci.

journalctl è lo strumento Lavoravo con la rivista.

giornale senza fronzoli

Puoi invocare journalctl nessun parametro della riga di comando:

journalctl

journalctl mostra il diario completo, con le voci più vecchie in cima alla lista. L'elenco viene visualizzato in less, permettendoti di navigare e cercare utilizzando le consuete funzioni di navigazione di less. Puoi anche usare il Left Arrow e Right Arrow tasti a scorrimento laterale per leggere ampie voci di registro.

Premendo il End salterà direttamente in fondo all'elenco e alle voci di registro più recenti.

premere Ctrl+C uscire.

IMPARENTATO: Come usare il comando less in Linux

Sebbene journalctl può essere chiamato senza usare sudo, ti assicurerai di vedere tutti i dettagli all'interno del registro se si utilizza sudo.

sudo journalctl

Se ne hai bisogno, può fare journalctl invia il tuo output alla finestra del terminale invece che a less, usando il --no-pager opzione.

sudo journalctl --no-pager

L'output scorre rapidamente nella finestra del terminale e torna al prompt dei comandi.

Per limitare il numero di righe che journalctl ritorna, usa el -n Opzione (Linee). Chiediamo dieci linee di partenza:

sudo journalctl -n 10

Seguendo gli aggiornamenti della rivista

Produrre journalctl mostra le voci più recenti man mano che arrivano nel diario, Utilizzare il -f (Continua) opzione.

sudo journalctl -f

La voce più recente ha un timestamp di 07:09:07. Mentre si svolge una nuova attività, le nuove voci vengono aggiunte nella parte inferiore dello schermo. Aggiornamenti quasi in tempo reale: ¡geniale!

In 07:09:59 un'applicazione chiamata geek-app iniettato una voce di registro nel diario che diceva: “Nuovo messaggio da HTG”.

Modifica del formato di visualizzazione

Perché il journal è un file binario, i dati che contiene devono essere tradotti o analizzati in testo prima che possano essere mostrati a te. Con diversi analizzatori, diversi formati di output possono essere creati dagli stessi dati di origine binaria. Ci sono diversi formati che journalctl posso usare.

L'output predefinito è il formato breve, che è molto simile al classico formato del registro di sistema. Per richiedere esplicitamente il modulo breve, Utilizzare il -o (Uscita) opzione con il short modificatore.

sudo journalctl -n 10 -o corto-pieno

Da sinistra a destra, i campi sono:

  • L'ora in cui è stato creato il messaggio, in ora locale.
  • Il nome dell'ospite.
  • Il nome della procedura. Questa è la procedura che ha generato il messaggio.
  • Il messaggio di registro.

Per ottenere una data e un'ora complete, Utilizzare il short-full modificatore:

sudo journalctl -n 10 -o corto-pieno

I formati di data e ora in questo output sono il formato in cui è necessario fornire date e ore quando si selezionano i messaggi di registro per periodo, come vedremo tra poco.

Per visualizzare tutti i metadati che accompagnano ogni messaggio di registro, Utilizzare il verbose modificatore.

sudo journalctl -n 10 -o verboso

ci sono molti campi possibili, ma è raro che tutti i campi siano presenti in un messaggio.

Un campo che è importante evidenziare per discutere è il Priority campagna. In questo esempio, ha un valore di 6. Il valore rappresenta la rilevanza del messaggio:

  • 0: Emergenza. Il sistema non può essere utilizzato.
  • 1: Mettere in guardia. È stata segnalata una condizione che deve essere corretta immediatamente.
  • 2: critico. Questo copre i blocchi, core dump e gravi arresti anomali nelle applicazioni primarie.
  • 3: Errore. È stato segnalato un errore, ma non è considerato grave.
  • 4: Avvertimento. Indica una condizione che, se ignorato, può diventare un errore.
  • 5: Avviso. Utilizzato per segnalare eventi insoliti, ma nessun errore.
  • 6: Informazione. Messaggi operativi regolari. Questi non richiedono alcuna azione.
  • 7: Debug. I messaggi vengono inseriti nelle applicazioni per facilitarne il debug.

Se vuoi che l'output sia formato correttamente Notazione oggetto JavaScript (JSON), usa el json modificatore:

sudo journalctl -n 10 -o json

Ogni messaggio è avvolto correttamente come un oggetto JSON ben formato e viene visualizzato un messaggio per riga di output.

Per avere l'output JSON piuttosto stampato, utilizzare il json-pretty modificatore.

sudo journalctl -n 10 -o json-pretty

Ogni oggetto JSON è diviso in più righe, con ogni coppia nome-valore su una nuova riga.

Per visualizzare solo i messaggi di ingresso del registro, nessun timestamp o altri metadati, Utilizzare il cat modificatore:

sudo journalctl -n 10 -un gatto

Questo formato di visualizzazione può rendere difficile identificare quale procedura ha generato l'evento di registro, anche se alcuni messaggi contengono un indizio.

Selezione dei messaggi di registro per periodo di tempo

Per limitare l'uscita di journalctl a un periodo di tempo che ti interessa, Utilizzare il -S (a partire dal) e -U (fino a) opzioni.

Per visualizzare le voci del registro da una data e un'ora particolari, usa questo comando:

sudo journalctl -S "2020-91-12 07:00:00"

La schermata contiene solo i messaggi arrivati ​​dopo la data e l'ora del comando.

Per impostare un periodo di tempo su cui si desidera segnalare, usa entrambi i -S (a partire dal) e -U (fino a) opzioni insieme. Questo comando analizza i messaggi di registro da un periodo di tempo di 15 minuti:

sudo journalctl -S "2020-91-12 07:00:00" -tu "2020-91-12 07:15:00"

Questa è un'ottima combinazione da usare se sai che è successo qualcosa di strano sul tuo sistema e approssimativamente quando è successo.

Utilizzo di periodi di tempo relativi

Puoi utilizzare indirizzi relativi quando selezioni i tuoi periodi di tempo. Ciò significa che puoi dire cose come “mostrami tutti gli eventi da un giorno fa fino ad ora”. Questo è esattamente ciò che significa questo comando. Il “D” significa “giorno” e il “-1” significa un giorno nel passato.

sudo journalctl -S -1d

I messaggi di registro sono elencati da 00:00:00 da ieri a “Ora”.

Se vuoi indagare su qualcosa che è successo nel recente passato, è possibile specificare un periodo di tempo relativo misurato in ore. Qui stiamo esaminando i messaggi di registro dell'ultima ora:

sudo journalctl -S -1h

Vengono visualizzati i messaggi dell'ultima ora. È inoltre possibile utilizzare “m” determinare i periodi di tempo relativi misurati in minuti e “w” per settimane.

journalctl capisce today, yesterday, e tomorrow. Questi modificatori forniscono un modo conveniente per specificare periodi di tempo comuni. Per vedere tutti gli eventi accaduti ieri, usa questo comando:

sudo journalctl -S ieri

Tutti gli eventi del registro del diario che si sono verificati ieri, fino a mezzanotte 00:00:00, vengono recuperati e visualizzati.

Per vedere tutti i messaggi di registro ricevuti finora, usa questo comando:

sudo journalctl -S oggi

Mostra tutto da 00:00:00 fino al momento in cui viene dato il comando.

Puoi mescolare i diversi modificatori del periodo di tempo. Per vedere tutto da due giorni fa fino all'inizio di oggi, usa questo comando:

sudo journalctl -S -2d -U oggi

Tutto dall'altro ieri ad oggi viene recuperato e mostrato.

Scegli i messaggi di registro per campi dati

Puoi cercare i messaggi di registro abbinando una vasta gamma di campi rivista. Queste ricerche cercano di trovare corrispondenze nei metadati allegati a ciascun messaggio. Si raccomanda che vedere l'elenco dei campi e scegli quelli che ti sono più utili.

Si prega di notare che se un'applicazione completa o meno tutti i campi, dipende totalmente dagli autori dell'applicazione. Non posso garantire che tutti i campi saranno completati.

Tutti i modificatori del campo journal vengono utilizzati allo stesso modo. Ne useremo alcuni nei nostri esempi di seguito. Per cercare i messaggi di registro per un'applicazione specifica, Utilizzare il _COMM (comando) modificatore. Se usi anche il -f (Continua) opzione, journalctl terrà traccia dei nuovi messaggi da questa app non appena arrivano.

sudo journalctl -f _COMM=geek-app

È possibile cercare le voci di registro utilizzando il identificazione del processo della procedura che ha generato il messaggio di log. Utilizzare il ps comando per trovare l'ID della procedura del demone o dell'applicazione da cercare.

sudo journalctl _PID=751

Sulla macchina utilizzata per indagare su questo post, il SSH Il diavolo è la procedura 751.

Puoi anche cercare per ID utente. Questo è l'ID utente della persona che ha avviato l'applicazione o il comando, o chi è il titolare del procedimento.

sudo journalctl _UID=1000

Tutti i messaggi associati a qualsiasi altro ID utente vengono filtrati. Vengono visualizzati solo i messaggi relativi all'utente 1000:

Un altro modo per trovare i messaggi di registro relativi a un'applicazione specifica è fornire il percorso dell'eseguibile.

sudo journalctl /usr/bin/anacron

Tutti i anacron i messaggi di registro del programmatore vengono recuperati e visualizzati.

Per facilitare la ricerca, possiamo chiedere journalctl per elencare tutti i valori che contiene, per uno qualsiasi dei campi della rivista.

Per visualizzare gli ID utente che journalctl ha registrato messaggi di registro per, Utilizzare il -F (campi) e passa il _UID identificatore di campo.

journalctl -F _UID

Facciamolo di nuovo e guarda il ID gruppo (GID):

journalctl -F _GID

Puoi farlo con uno qualsiasi dei identificatori di campi di giornale.

Elenco dei messaggi del kernel

Esiste un modo integrato per isolare rapidamente i messaggi del kernel. Non c'è bisogno di cercarli e isolarli da soli. il -k L'opzione (kernel) rimuove tutti gli altri messaggi e ti dà una vista istantanea delle voci di registro del kernel.

sudo journalctl -k

L'evidenziazione riflette la pertinenza del messaggio, secondo i valori in Priority campagna.

Revisione del messaggio di avvio

Se hai un ostacolo relativo allo stivale che vuoi indagare, journalctl l'ho coperto. Forse hai aggiunto nuovo hardware e non risponde, o un componente hardware precedentemente funzionante non funziona più dopo l'ultimo aggiornamento del sistema.

Per visualizzare le voci di registro associate al tuo ultimo avvio, usa el -b (opzione di avvio:

journalctl -b

Vengono visualizzate le voci di registro dell'ultimo avvio.

Quando diciamo “ultimo avvio”, intendiamo la procedura di avvio che ha dato vita al tuo computer per la tua sessione di accesso corrente. Per vedere gli stivali precedenti, puoi usare un numero per saperlo journalctl che stivale ti interessa. Per visualizzare il terzo avvio precedente, usa questo comando:

journalctl -b 3

In genere, se hai incontrato un posto di blocco e hai dovuto riavviare la macchina, è una vecchia sequenza di avvio che ti interessa. Quindi questo è un modulo di comando comune.

È facile confondersi con la sequenza di avvio. Aiutare, possiamo chiedere journalctl per elencare gli stivali che hai registrato nel tuo diario, usando il --list-boots opzione.

journalctl --list-boots

È possibile identificare l'inizio per il quale si desidera visualizzare i messaggi dalla data e dall'ora, e quindi utilizzare il numero nella colonna di sinistra per ottenere i messaggi di registro per quella sequenza di avvio. Puoi anche selezionare l'identificatore di avvio di 32 bit e passalo a journalctl.

sudo journalctl -b 1f00248226ed4ab9a1abac86e0d540d7

I messaggi di registro per la sequenza di avvio che abbiamo richiesto vengono recuperati e visualizzati.

Gestisci lo spazio sul disco rigido del journal

Decisamente, il diario e tutti i suoi messaggi di registro sono memorizzati sul tuo disco rigido. Ciò significa che occuperanno spazio sul disco rigido. Per vedere quanto spazio ha occupato il diario, Utilizzare il --disk-usage opzione.

journalctl --utilizzo del disco

Con i dischi rigidi di oggi, 152 MB non è affatto molto spazio, ma a scopo dimostrativo, lo taglieremo ancora. Ci sono due alternative per farlo. Il primo è determinare un limite di dimensione a cui si desidera ridurre la rivista. Ricrescerà, decisamente, ma possiamo potarlo ora ed essere pronti per quella nuova crescita.

Useremo il meraviglioso titolo --vacuum-size opzione e passare la dimensione a cui vorremmo che il diario fosse ridotto. chiederemo 100 MB. Il modo di pensare a questo è che stiamo chiedendo journalctl per “buttare via il più possibile, ma non scendere 100 MB”.

journalctl --vacuum-size=100M

L'altro modo per ridurre le dimensioni del tuo diario è usare il --vacuum-time opzione. Questa opzione dice journalctl per eliminare i messaggi più vecchi del periodo che hai fornito sulla riga di comando. Puoi usare days, weeks, months, e years nel periodo di tempo.

Cancelliamo tutti i messaggi più vecchi di una settimana:

journalctl --vacuum-time=1settimane

Dati contro informazioni

I dati non sono utili a meno che tu non possa entrarci e farne uso. Allora diventa un'informazione utile. il journalctl command è uno strumento flessibile e sofisticato che permette di inserire i dati di interesse in vari modi.

Puoi utilizzare quasi tutte le informazioni di cui hai bisogno per individuare i messaggi di registro di cui hai bisogno.

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.