Consultar los sucesos del sistema en la terminal de Ubuntu 18.04 LTS
En un artículo anterior, hemos aprendido a Consultar los sucesos del sistema en la interfaz gráfica de Ubuntu 18.04 LTS. Sin embargo, en ocasiones puede resultar más cómodo consultar los eventos del sistema usando la línea de comandos. Incluso puede resultar más útil, porque podemos usar sus capacidades para automatizar ciertas acciones a través de scripts.
Por este motivo, es interesante que conozcamos los comandos que nos pueden ayudar en esta tarea. A continuación, iremos enumerando los más interesantes…
El comando dmesg
El objetivo del comando dmesg (de diagnostic message) consiste en ofrecer al usuario los mensajes generados durante el arranque del sistema y los producidos por las aplicaciones y el propio sistema durante su funcionamiento. Por eso es tan útil cuando nuestro equipo no funciona como esperamos…
Para usar dmesg, sólo tenemos que escribirlo en una ventana de terminal:
dmesg
Si has ejecutado el ejemplo anterior, habrás comprobado que se obtiene una gran cantidad de información. Tanta que la mayor parte se pierde al ser desplazada hacia arriba por el scroll de la terminal.
Esto no debe preocuparte, porque siempre puedes utilizar la barra de scroll para desplazarte por el resultado.
No obstante, cuando utilizas el comando dmesg en un ordenador sin interfaz gráfica (por ejemplo, en Ubuntu Server), no tendrás a mano esa característica. Para estos casos, puede resultar interesante el comando less.
less permite ver el contenido de un archivo de texto, o la salida reenviada por otro comando. Algo parecido al lo que hace el comando more, pero permitiéndonos desplazarnos libremente por el texto.
En nuestro caso, podremos usar un comando como este:
dmesg | less
Cuando tengamos el texto en pantalla, podemos interaccionar con el programa usando diferentes teclas:
-
AvPag y RePag para avanzar u retroceder una pantalla completa.
-
g y G para ir al principio o al final del texto.
-
/ y ? para buscar una palabra hacia adelante o hacia atrás desde el punto de lectura actual
-
n para repetir la búsqueda.
-
etc.
Otra opción consiste en usar el comando grep para filtrar la salida de dmesg, de modo que se muestren únicamente las líneas que coincidan con el texto incluido.
Por ejemplo, podemos mostrar únicamente las líneas que contengan el texto usb escribiendo lo siguiente:
dmesg | grep usb
Por último, también tenemos la opción de reducir la información que nos ofrece dmesg, en función de la categoría a la que pertenezca. Eso se consigue añadiéndole el argumento -l (level) seguido de la categoría a la que pertenecen los mensajes que queremos consultar.
Por ejemplo, si queremos obtener únicamente los mensajes de error y los avisos, escribiremos lo siguiente:
dmesg -l err,warn
Además de las anteriores, también podemos elegir entre las siguientes categorías:
-
emerg: El sistema se encuentra en un estado inutilizable.
-
alert: Se debe tomar una acción inmediatamente.
-
crit: Condiciones críticas.
-
notice: Condición normal pero significativa.
-
info: Informativa.
-
debug: Mensaje de nivel de depuración.
Si necesitas más información sobre dmesg y todos sus argumentos, puedes consultar su página en el manual oficial de Ubuntu: http://manpages.ubuntu.com/manpages/cosmic/man1/dmesg.1.html.
Por su parte, la página del comando less es: http://manpages.ubuntu.com/manpages/cosmic/man1/less.1.html.
En cuanto a grep, puedes encontrar más información en: http://manpages.ubuntu.com/manpages/cosmic/man1/grep.1.html
El comando tail
Traducido literalmente del inglés, tail significa cola, y eso es precisamente lo que hace: mostrarnos la parte final (la más reciente) de un archivo.
En nuestro caso, nos va a permitir centrarnos en los últimos eventos añadidos a cualquier archivo de sucesos.
De forma predeterminada tail nos ofrece las últimas 10 líneas del archivo que le indiquemos. Así, si necesitamos consultar las últimas anotaciones en el archivo syslog, bastaría con escribir algo como esto:
tail -f /var/log/syslog
Observa que usamos el argumento -f antes del nombre del archivo y que usamos su ruta completa.
El resultado sería como en la siguiente imagen:
Si quisiéramos un número diferente de líneas, bastaría con usar el argumento -n seguido del número adecuado. Por ejemplo:
tail -n4 -f /var/log/syslog
Puedes encontrar más información sobre tail y todos sus argumentos en: http://manpages.ubuntu.com/manpages/cosmic/man1/tail.1.html
El comando cat
En gnu/linux, el comando cat obtiene el contenido de un archivo y lo muestra en la salida predeterminada (normalmente, la terminal). Así, cuando queremos ver lo que contiene el archivo syslog, bastaría con escribir lo siguiente:.
cat /var/log/syslog
Como ya pasó con dmesg, el contenido del archivo será mayor que la capacidad de la pantalla. Esto no es un problema en una ventana de terminal, porque disponemos de la barra de scroll lateral, pero si estás usando cat en una interfaz de texto, recuerda que puedes hacer uso de less (tal y como vimos con dmesg).
Tanto la orden tail como como la orden cat pueden combinarse también con grep cuando necesitemos filtrar la salida. Por ejemplo, si necesitamos únicamente las líneas que hagan referencia a la palabra usb, escribiríamos lo siguiente:
cat /var/log/syslog | grep usb
Para ampliar información sobre el comando cat, puedes recurrir a la página: http://manpages.ubuntu.com/manpages/cosmic/man1/cat.1.html
El comando logger
El último comando que vamos a comentar en este artículo no pretende obtener información de los registros del sistema. Por el contrario, su objetivo será añadir información en ellos. Concretamente al archivo /var/log/syslog.
La ventaja es que, este tipo de anotaciones en el registro de eventos se puede hacer desde la línea de comandos o desde un script, con el fin de dejar constancia de cualquier circunstancia ocurrida.
La forma más básica de usar el comando logger es así:
logger “Mensaje creado por el usuario”
Sin embargo, si hacemos a continuación una consulta como esta:
cat /var/log/syslog | grep Mensaje
Comprobaremos que ya existe la anotación en el archivo syslog.
… Y se ha incluido automáticamente la fecha, la hora, el nombre del equipo y la cuenta de usuario que la ha generado.
Por supuesto, también podremos hacer la comprobación usando la herramienta Registros de la interfaz gráfica.
Puedes encontrar más información sobre el comando logger y todos sus argumentos en: http://manpages.ubuntu.com/manpages/cosmic/man1/logger.1.html
Y esto es todo por el momento. Espero que te resulte útil.