Come visualizzare le ultime x righe dal registro dei servizi di systemctl


21

Sto cercando un modo per stampare semplicemente le ultime X linee da un servizio systemctl in Debian. Vorrei installare questo codice in uno script, che utilizza le voci di registro stampate e più recenti. Ho trovato questo post ma non sono stato in grado di modificarlo per i miei scopi.

Attualmente sto usando questo codice, che mi sta solo dando un piccolo frammento dei file di registro:

journalctl --unit=my.service --since "1 hour ago" -p err

Per dare un esempio di come dovrebbe apparire il risultato, è sufficiente digitare il comando sopra per qualsiasi servizio e scorrere fino alla fine del registro. Quindi copia le ultime 300 righe a partire dal basso.

La mia idea è di usare egrep ex. egrep -m 700 .ma da allora non ho avuto fortuna.

Risposte:



7

Basta inviare l'output a tail:

journalctl --unit=my.service | tail -n 300

Il tailcomando stampa le ultime righe (10 per impostazione predefinita) ricevute in stdin su stdout.


1
Totalmente dimenticato della coda - ottima idea, grazie mille!
user3191334

5
La coda può essere dolorosamente lenta per tronchi di grandi dimensioni. Il -njournalctrl integrato è quello che vuoi. ad es.journalctl -n 300
Drakes il

4

Se vuoi vedere l'ultimo n numero di righe e vedere i nuovi messaggi mentre vengono stampati nel registro, prova questo:

journalctl -u <service name> -n <number of lines> -f

Dove -nindica il numero di righe che desideri visualizzare dalla coda del registro e -fspecifica che desideri seguire il registro quando cambia.


4

Appena:

journalctl -u SERVICE_NAME -e

Il parametro -esta per:

-e --pagerend; Passa immediatamente alla fine del journal all'interno dello strumento cercapersone implicito. Ciò implica -n 1000 per garantire che il cercapersone non bufferizzerà i log di dimensioni illimitate. Questo può essere sovrascritto con un esplicito -n con qualche altro valore numerico, mentre -nall disabiliterà questo limite.


1

dato che la soluzione di comando di coda ha già fornito. Ho provato usando sed commmand e ha funzionato bene

Sotto il comando verranno visualizzate le ultime 300 righe

journalctl --unit=my.service | sed -e :a -e '$q;N;301,$D;ba' 
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.