El registro del sistema Linux cambió con la introducción de systemd
. Aprenda a utilizar el journalctl
comando para leer y filtrar los mensajes de registro del sistema.
Registro centralizado
No ajeno a la controversia, el systemd
El administrador de sistemas y servicios introdujo un cambio significativo en la forma en que se recopilan los registros del sistema. Los registros solían estar ubicados en diferentes lugares del sistema de archivos de acuerdo con el servicio o demonio que los estaba creando. Pero todos tenían algo en común. Eran archivos de texto sin formato.
Con systemd
Todos los archivos de registro del sistema, de arranque y del kernel se recopilan y administran a través de una solución de registro central y dedicada. El formato en el que se almacenan es binario. Una cosa que esto facilita es poder extraer los datos en diferentes formatos, como JSON, como ya veremos.
Además puede facilitar la referencia cruzada de información relacionada que se hubiera registrado previamente en archivos de registro separados. Debido a que los datos ahora se guardan en un solo diario, los datos de varias fuentes de interés se pueden elegir y mostrar en una sola lista entrelazada de entradas.
journalctl
es la herramienta solía trabajar con la revista.
journalctl sin lujos
Puedes invocar journalctl
sin parámetros de línea de comando:
journalctl
journalctl
muestra el diario completo, con las entradas más antiguas en la parte de arriba de la lista. La lista se muestra en less
, lo que le posibilita navegar y buscar usando las funciones de navegación habituales de less
. Además puede usar el Left Arrow
y Right Arrow
teclas para desplazarse hacia los lados para leer entradas de registro amplias.
Pulsando el End
saltará de forma directa al final de la lista y las entradas de registro más recientes.
prensa Ctrl+C
salir.
RELACIONADO: Cómo utilizar el comando less en Linux
Pese a que journalctl
se puede llamar sin utilizar sudo
, te asegurarás de ver todos los detalles dentro del registro si utiliza sudo
.
sudo journalctl
Si lo necesita, puede hacer journalctl
enviar su salida a la ventana de terminal en lugar de a less
, usando el --no-pager
opción.
sudo journalctl --no-pager
La salida se desplaza rápidamente a través de la ventana del terminal y regresa al símbolo del sistema.
Para limitar el número de líneas que journalctl
devoluciones, use el -n
Opción (líneas). Pidamos diez líneas de salida:
sudo journalctl -n 10
Siguiendo las actualizaciones de la revista
Para hacer journalctl
mostrar las entradas más recientes a medida que llegan al diario, utilice el -f
(seguir) opción.
sudo journalctl -f
La entrada más reciente cuenta con una marca de tiempo de 07:09:07. A medida que tiene lugar una nueva actividad, las nuevas entradas se añaden al final de la pantalla. Actualizaciones casi en tiempo real: ¡genial!
A las 07:09:59 una aplicación llamada geek-app
inyectó una entrada de registro en el diario que decía: «Nuevo mensaje de HTG».
Cambio del formato de visualización
Debido a que el diario es un archivo binario, los datos que contiene deben traducirse o analizarse en texto antes de que se le puedan mostrar. Con diferentes analizadores, se pueden crear diferentes formatos de salida a partir de los mismos datos de origen binario. Hay varios formatos diferentes que journalctl
puedo utilizar.
La salida predeterminada es el formato corto, que es muy semejante al formato de registro del sistema clásico. Para solicitar explícitamente el formato corto, utilice el -o
(salida) opción con la short
modificador.
sudo journalctl -n 10 -o short-full
De izquierda a derecha, los campos son:
- La hora a la que se creó el mensaje, en hora local.
- El nombre de host.
- El nombre del procedimiento. Este es el procedimiento que generó el mensaje.
- El mensaje de registro.
Para obtener una marca de fecha y hora completa, utilice el short-full
modificador:
sudo journalctl -n 10 -o short-full
Los formatos de fecha y hora en esta salida son el formato en el que debe proporcionar fechas y horas cuando selecciona los mensajes de registro por período, como veremos en breve.
Para ver todos los metadatos que acompañan a cada mensaje de registro, utilice el verbose
modificador.
sudo journalctl -n 10 -o verbose
Allí hay muchos campos posibles, pero es raro que todos los campos estén presentes en un mensaje.
Un campo que es importante destacar discutir es el Priority
campo. En este ejemplo, tiene un valor de 6. El valor representa la relevancia del mensaje:
- 0: Emergencia. El sistema no se puede usar.
- 1: Alerta. Se ha marcado una condición que debe corregirse de inmediato.
- 2: Crítico. Esto cubre bloqueos, volcados de núcleo y fallas importantes en aplicaciones primarias.
- 3: Error. Se ha informado de un error, pero no se considera grave.
- 4: Advertencia. Señala una condición que, si se ignora, puede convertirse en un error.
- 5: Aviso. Se utiliza para informar eventos que son inusuales, pero no errores.
- 6: Información. Mensajes operativos regulares. Estos no requieren acción.
- 7: Depurar. Los mensajes se colocan en aplicaciones para que les sea más fácil depurarlos.
Si desea que la salida se presente correctamente formada Notación de objetos JavaScript (JSON), use el json
modificador:
sudo journalctl -n 10 -o json
Cada mensaje se envuelve correctamente como un objeto JSON bien formado y se muestra un mensaje por línea de salida.
Para tener la salida JSON bastante impreso, usar el json-pretty
modificador.
sudo journalctl -n 10 -o json-pretty
Cada objeto JSON se divide en varias líneas, con cada par nombre-valor en una nueva línea.
Para ver solo los mensajes de entrada de registro, sin marcas de tiempo u otros metadatos, utilice el cat
modificador:
sudo journalctl -n 10 -o cat
Este formato de visualización puede dificultar la identificación de qué procedimiento generó el evento de registro, aún cuando algunos mensajes contienen una pista.
Selección de mensajes de registro por período de tiempo
Para limitar la salida de journalctl
a un período de tiempo que le interese, utilice el -S
(desde) y -U
(hasta) opciones.
Para ver las entradas del registro desde una fecha y hora en particular, use este comando:
sudo journalctl -S "2020-91-12 07:00:00"
La pantalla contiene solo mensajes que llegaron después de la fecha y hora en el comando.
Para establecer un período de tiempo sobre el que desea informar, utilice tanto el -S
(desde) y -U
(hasta) opciones juntas. Este comando analiza los mensajes de registro de un período de tiempo de 15 minutos:
sudo journalctl -S "2020-91-12 07:00:00" -U "2020-91-12 07:15:00"
Esta es una magnífica combinación de uso si sabe que sucedió algo extraño en su sistema y aproximadamente cuándo sucedió.
Uso de períodos de tiempo relativos
Puede usar direcciones relativas cuando seleccione sus períodos de tiempo. Eso significa que puedes decir cosas como «muéstrame todos los eventos desde hace un día hasta ahora». Esto es exactamente lo que significa este comando. La «d» significa «día» y el «-1» significa un día en el pasado.
sudo journalctl -S -1d
Los mensajes de registro se enumeran desde las 00:00:00 de ayer hasta «ahora».
Si desea investigar algo que sucedió en el pasado reciente, puede especificar un período de tiempo relativo medido en horas. Aquí estamos revisando los mensajes de registro de la última hora:
sudo journalctl -S -1h
Se muestran los mensajes de la última hora. Además puede usar «m» para determinar períodos de tiempo relativos medidos en minutos y «w» para semanas.
journalctl
entiende today
, yesterday
, y tomorrow
. Estos modificadores proporcionan una forma práctica de especificar períodos de tiempo comunes. Para ver todos los eventos que sucedieron ayer, use este comando:
sudo journalctl -S yesterday
Todos los eventos del registro de diario que ocurrieron ayer, hasta la medianoche 00:00:00, se recuperan y se muestran.
Para ver todos los mensajes de registro recibidos hasta ahora, use este comando:
sudo journalctl -S today
Se muestra todo desde las 00:00:00 hasta el momento en que se emite el comando.
Puede mezclar los diferentes modificadores de período de tiempo. Para ver todo desde hace dos días hasta el comienzo de hoy, use este comando:
sudo journalctl -S -2d -U today
Todo desde anteayer hasta hoy se recupera y se muestra.
Elegir mensajes de registro por campos de datos
Puede buscar mensajes de registro que coinciden con una amplia gama de campos de revistas. Estas búsquedas intentan hallar coincidencias en los metadatos adjuntos a cada mensaje. Se recomienda que consulte la lista de campos y elige los que te resulten más útiles.
Tenga en cuenta que si una aplicación completa todos los campos o no, depende totalmente de los autores de la aplicación. No puede garantizar que se completarán todos los campos.
Todos los modificadores de campo de diario se usan de la misma forma. Usaremos algunos en nuestros ejemplos a continuación. Para buscar mensajes de registro de una aplicación específica, utilice el _COMM
(comando) modificador. Si además utiliza el -f
(seguir) opción, journalctl
rastreará los nuevos mensajes de esta aplicación a medida que lleguen.
sudo journalctl -f _COMM=geek-app
Puede buscar entradas de registro usando el identificacion de proceso del procedimiento que generó el mensaje de registro. Usar el ps
comando para hallar el ID de procedimiento del demonio o la aplicación que va a buscar.
sudo journalctl _PID=751
En la máquina utilizada para investigar este post, el SSH El demonio es el procedimiento 751.
Además puede buscar por ID de usuario. Este es el ID de usuario de la persona que inició la aplicación o el comando, o que es el propietario del procedimiento.
sudo journalctl _UID=1000
Todos los mensajes asociados con cualquier otro ID de usuario se filtran. Solo se muestran los mensajes relacionados con el usuario 1000:
Otra manera de buscar mensajes de registro relacionados con una aplicación específica es proporcionar la ruta al ejecutable.
sudo journalctl /usr/bin/anacron
Toda la anacron
los mensajes de registro del programador se recuperan y se muestran.
Para facilitar la búsqueda, podemos preguntar journalctl
para enumerar todos los valores que contiene, para cualquiera de los campos del diario.
Para ver los ID de usuario que journalctl
ha grabado mensajes de registro para, utilice el -F
(campos) y pase la _UID
identificador de campo.
journalctl -F _UID
Hagamos eso de nuevo y miremos el ID de grupo (GID):
journalctl -F _GID
Puede hacer esto con cualquiera de los identificadores de campo de diario.
Listado de mensajes del kernel
Hay una forma integrada de aislar rápidamente los mensajes del kernel. No es necesario buscarlos y aislarlos usted mismo. los -k
La opción (kernel) elimina todos los demás mensajes y le brinda una vista instantánea de las entradas del registro del kernel.
sudo journalctl -k
El resaltado refleja la relevancia del mensaje, de acuerdo con los valores en el Priority
campo.
Revisión de mensajes de arranque
Si tiene un obstáculo relacionado con el arranque que desea investigar, journalctl
lo tiene cubierto. Tal vez haya agregado nuevo hardware y no responde, o un componente de hardware que funcionaba previamente ya no funciona después de la última actualización del sistema.
Para ver las entradas de registro asociadas con su último arranque, use el -b
(opción de arranque:
journalctl -b
Se muestran las entradas de registro del último inicio.
Cuando decimos «último arranque», nos referimos al procedimiento de arranque que dio vida a su computadora para su sesión actual de inicio de sesión. Para ver las botas anteriores, puede utilizar un número para saber journalctl
en qué arranque estás interesado. Para ver el tercer arranque anterior, utiliza este comando:
journalctl -b 3
De forma general, si tuvo un obstáculo y tuvo que reiniciar su máquina, es una secuencia de arranque anterior que le interesa. Por lo tanto esta es una forma de comando común.
Es fácil confundirse con la secuencia de botas. Para ayudar, podemos pedir journalctl
para enumerar las botas que ha registrado en su diario, usando el --list-boots
opción.
journalctl --list-boots
Puede identificar el inicio para el que desea ver los mensajes a partir de la marca de fecha y hora, y posteriormente utilizar el número en la columna de la izquierda para obtener los mensajes de registro para esa secuencia de inicio. Además puede seleccionar el identificador de inicio de 32 bits y pasarlo a journalctl
.
sudo journalctl -b 1f00248226ed4ab9a1abac86e0d540d7
Los mensajes de registro de la secuencia de inicio que solicitamos se recuperan y se muestran.
Administrar el espacio del disco duro del diario
Decididamente, el diario y todos sus mensajes de registro se almacenan en su disco duro. Eso significa que ocuparán espacio en el disco duro. Para ver cuánto espacio ha ocupado el diario, utilice el --disk-usage
opción.
journalctl --disk-usage
Con los discos duros de hoy, 152 MB no es mucho espacio en absoluto, pero para fines de demostración, aún lo recortaremos. Hay dos alternativas para hacer esto. La primera es determinar un límite de tamaño al que desea que se reduzca la revista. Volverá a crecer, decididamente, pero podemos podarlo ahora y estar listo para ese nuevo crecimiento.
Usaremos el maravillosamente titulado --vacuum-size
opción y pasar el tamaño al que nos gustaría que se redujera el diario. Pediremos 100 MB. La forma de pensar en esto es que estamos preguntando journalctl
para «tirar todo lo que pueda, pero no baje de 100 MB».
journalctl --vacuum-size=100M
La otra manera de recortar el tamaño del diario es utilizar el --vacuum-time
opción. Esta opción dice journalctl
para descartar mensajes que sean más antiguos que el período que proporcionó en la línea de comando. Puedes utilizar days
, weeks
, months
, y years
en el período de tiempo.
Eliminemos todos los mensajes anteriores a una semana:
journalctl --vacuum-time=1weeks
Datos frente a información
Los datos no son útiles a menos que pueda ingresar a ellos y hacer uso de ellos. Entonces se convierte en información útil. los journalctl
command es una herramienta flexible y sofisticada que le posibilita ingresar a la data de interés de diversas formas.
Puede utilizar casi cualquier fragmento de información que tenga para ubicar los mensajes de registro que necesita.
setTimeout(function(){
!function(f,b,e,v,n,t,s)
{if(f.fbq)return;n=f.fbq=function(){n.callMethod?
n.callMethod.apply(n,arguments):n.queue.push(arguments)};
if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version=’2.0′;
n.queue=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];
s.parentNode.insertBefore(t,s) } (window, document,’script’,
‘https://connect.facebook.net/en_US/fbevents.js’);
fbq(‘init’, ‘335401813750447’);
fbq(‘track’, ‘PageView’);
},3000);