Comment voir les dernières lignes x du journal du service systemctl

21

Je cherche un moyen d'imprimer simplement les dernières lignes X d'un service systemctl dans Debian. Je voudrais installer ce code dans un script, qui utilise les entrées de journal imprimées et les plus récentes. J'ai trouvé ce message mais je n'ai pas pu le modifier à mes fins.

Actuellement, j'utilise ce code, qui me donne juste un petit extrait des fichiers journaux:

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

Pour donner un exemple de ce à quoi le résultat devrait ressembler, tapez simplement la commande ci-dessus pour n'importe quel service et faites défiler jusqu'à la fin du journal. Copiez ensuite les 300 dernières lignes en partant du bas.

Mon idée est d'utiliser egrep ex. egrep -m 700 .mais je n'ai pas eu de chance depuis maintenant.

user3191334
la source

Réponses:

48
journalctl --unit=my.service -n 100 --no-pager
sourcejedi
la source
7

Il suffit de diriger la sortie vers tail:

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

La tailcommande imprime les dernières lignes (10 par défaut) reçues dans stdin vers stdout.

dr01
la source
1
Totalement oublié la queue - bonne idée, merci beaucoup!
user3191334
5
La queue peut être douloureusement lente pour les gros bûches. L'intégré -nde journalctrl est ce que vous voulez. par exemplejournalctl -n 300
Drakes
4

Si vous voulez voir le n dernier nombre de lignes et voir les nouveaux messages lorsqu'ils sont imprimés dans le journal, essayez ceci:

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

-nindique le nombre de lignes que vous souhaitez voir à la fin du journal, et -fspécifie que vous souhaitez suivre le journal lorsqu'il change.

Derek Soike
la source
4

Juste:

journalctl -u SERVICE_NAME -e

Le paramètre -esignifie:

-e --pagerend; Sautez immédiatement à la fin du journal à l'intérieur de l'outil de pageur implicite. Cela implique -n 1000 pour garantir que le pager ne mettra pas en mémoire tampon les journaux de taille illimitée. Cela peut être remplacé par un -n explicite avec une autre valeur numérique, tandis que -nall désactivera cette limite.

Daniel Kmak
la source
1

depuis la solution de commande de queue déjà fournie.J'ai essayé en utilisant sed commmand et cela a bien fonctionné

La commande ci-dessous affichera les 300 dernières lignes

journalctl --unit=my.service | sed -e :a -e '$q;N;301,$D;ba' 
Praveen Kumar BS
la source