Как увидеть последние x строк из журнала службы systemctl

21

Я ищу способ, чтобы просто напечатать последние X строк из службы systemctl в Debian. Я хотел бы установить этот код в сценарий, который использует печатные и последние записи журнала. Я нашел этот пост, но не смог изменить его для своих целей.

В настоящее время я использую этот код, который просто дает мне небольшой фрагмент файлов журнала:

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

Чтобы привести пример того, как должен выглядеть результат, просто введите приведенную выше команду для любой службы и прокрутите до конца журнала. Затем скопируйте последние 300 строк, начиная снизу.

Моя идея состоит в том, чтобы использовать egrep ex. egrep -m 700 .но мне не повезло с тех пор.

user3191334
источник

Ответы:

7

Просто передайте вывод tail:

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

Команда tailвыводит последние строки (по умолчанию 10), полученные в stdin, в stdout.

dr01
источник
1
Полностью забыл про хвост - отличная идея, большое спасибо!
user3191334
5
Хвост может быть мучительно медленным для больших бревен. Встроенный -njournalctrl - это то, что вы хотите. напримерjournalctl -n 300
Дрейки
4

Если вы хотите увидеть последние n строк и увидеть новые сообщения по мере их вывода в журнал, попробуйте следующее:

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

Где -nуказывает количество строк, которые вы хотели бы видеть из хвоста журнала, и -fуказывает, что вы хотите следить за журналом по мере его изменения.

Дерек Соике
источник
4

Только:

journalctl -u SERVICE_NAME -e

Параметр -eобозначает:

-e - pagerend; Немедленно перейдите к концу журнала в подразумеваемом инструменте пейджера. Это подразумевает -n 1000, чтобы гарантировать, что пейджер не будет буферизовать журналы неограниченного размера. Это может быть переопределено явным -n с каким-либо другим числовым значением, в то время как -nall отключит этот ограничитель.

Даниэль Кмак
источник
1

так как хвостовое решение команды aleady предоставлено. Я попробовал, используя sed commmand, и он работал нормально

Ниже команда отобразит последние 300 строк

journalctl --unit=my.service | sed -e :a -e '$q;N;301,$D;ba' 
Правин Кумар Б.С.
источник