Saltar al contenido

Activar marcas temporales en historial de comandos de Linux

activar-marcas-temporales-en-historial-de-comandos-de-linux

Cuando se utilizan sistemas operativos basados en Linux, como caso característico en la empresa, es común tener que echar mano del bash history o historial de comandos del intérprete de comandos Bash.

Cuando algo malo sucede con un sistema informático, es necesario saber qué pasó y, para poder descartar un fallo humano (o un sabotaje premeditado) lo primero es saber qué estaba haciendo el usuario frente a la consola o terminal.

Ponerse a testear comandos sin saber lo que se hace, o probar a descargar programas a un servidor en producción es una pésima idea. Es mejor descargarte una máquina virtual o utilizar alguno de estos terminales Linux en linea.

Como ya sabrás (y si no, estás de suerte) existe un comando en sistemas Unix/Linux que nos permite recuperar un historial de comandos lanzados en la terminal, con una “memoria” que puede variar:

history

Dicho historial es, por defecto, de 500/1000 entradas o lineas (se puede modificar). Lo puedes ver de la siguiente forma.

echo $HISTSIZE

Como se puede ver, estos comandos no podemos saber si se lanzaron en un momento u otro, pero es posible si sigues leyendo.

Mostrar la fecha y hora en los comandos del Bash History

Es bastante simple, lo que tenemos que hacer es asignar el valor HISTTIMEFORMAT como variable de entorno, seguido de un valor concreto para representar la información.

Aquí usaremos, por ejemplo, la opción %F para poder ver los días en formato AAAAMMDD y la variable %T para ver la hora en formato HH:mm:ss.

export HISTTIMEFORMAT='%F %T '

Aunque, como buenos europeos que somos, seguor preferimos utilizar el siguiente formato y así ver primero los días antes que los años.

export HISTTIMEFORMAT='%d/%m/%y %T '

El resultado será algo así:

490 06/05/21 17:28:54 htop

Veremos que todos los comandos tienen por defecto la misma fecha/hora, que es la que leerá la variable cuando activemos la opción. Con el paso del tiempo, se irán actualizando los time stamps correctamente.

Ajuste persistente

SI queremos que el ajuste se mantenga entre diferentes sesiones, tendremos que ejecutar lo siguiente para modificar nuestro archivo bash_profile. Ojo, son 2 comandos consecutivos a lanzar.

echo 'export HISTTIMEFORMAT="%d/%m/%y %T "' >> ~/.bash_profile
source ~/.bash_profile

Podemos hacerlo también abriendo un editor de textos y añadiendo la linea a mano:

nano ~/.bashrc
export HISTTIMEFORMAT='%d/%m/%y %T '

Ctrl + X seguido de Y para salvar los cambios.

Esto aplica a Bash, que es el intérprete más utilizado, pero existen otras opciones que tendrán su forma específica de hacerlo, por ejemplo, en Zsh sería con la opción:

history -E

Buscar eventos en el historial de Bash

Aparte del uso habitual del comando, podemos obtener resultados personalizados, siguiendo estos ejemplos.

Obtener los últimos N comandos

history | tail -20

O bien:

history 20

Por último, si queremos borrar todos los eventos registrados, usaremos:

history -c

Alejandro Ver todo

Trabajo como consultor de ciberseguridad y me gusta lo que hago. Aficionado a la informática / tecnología en general, me gusta compartir con la gente lo poco que sé. También soy aficionado al deporte y los videojuegos.

2 comentarios sobre “Activar marcas temporales en historial de comandos de Linux Deja un comentario

Deja tu comentario (puedes hacerlo de forma anónima)

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios .

A %d blogueros les gusta esto: