Cómo ver las últimas líneas x del registro de servicio systemctl

21

Estoy buscando una manera, simplemente imprimir las últimas líneas X desde un servicio systemctl en Debian. Me gustaría instalar este código en un script, que utiliza las entradas de registro impresas y más recientes. Encontré esta publicación pero no pude modificarla para mis propósitos.

Actualmente estoy usando este código, que solo me da un pequeño fragmento de los archivos de registro:

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

Para dar un ejemplo de cómo debería ser el resultado, simplemente escriba el comando anterior para cualquier servicio y desplácese hasta el final del registro. Luego copie las últimas 300 líneas comenzando desde abajo.

Mi idea es usar egrep ex. egrep -m 700 .pero no tuve suerte desde ahora.

usuario3191334
fuente

Respuestas:

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

Simplemente canalice la salida a tail:

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

El tailcomando imprime las últimas líneas (10 por defecto) recibidas en stdin a stdout.

dr01
fuente
1
Se olvidó por completo de la cola: ¡gran idea, muchas gracias!
user3191334
55
La cola puede ser dolorosamente lenta para troncos grandes. Lo incorporado en -njournalctrl es lo que quieres. Ej .journalctl -n 300
Drakes el
4

Si desea ver el último n número de líneas y ver mensajes nuevos a medida que se imprimen en el registro, intente esto:

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

Donde -nindica el número de líneas que le gustaría ver desde el final del registro y -fespecifica que le gustaría seguir el registro a medida que cambia.

Derek Soike
fuente
4

Sólo:

journalctl -u SERVICE_NAME -e

Parámetro -esignifica:

-e - tendencia de página; Salte inmediatamente al final del diario dentro de la herramienta de buscapersonas implícita. Esto implica -n 1000 para garantizar que el localizador no almacenará en el búfer registros de tamaño ilimitado. Esto puede anularse con un explícito -n con algún otro valor numérico, mientras que -nall deshabilitará este límite.

Daniel Kmak
fuente
1

desde la solución de comando de cola aleady proporcionado. Lo intenté usando sed commmand y funcionó bien

El siguiente comando mostrará las últimas 300 líneas

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