bash – Cómo grabar automáticamente todas sus sesiones de terminal con la utilidad de script

Pregunta:

Lo que quiero lograr es poder grabar mis sesiones de terminal para archivar automáticamente cada vez que uso Yakuake / Konsole.

Es fácil de lograr si al comienzo de mi sesión hago:

script -f /home/$USER/bin/shell_logs/$(date +"%d-%b-%y_%H-%M-%S")_shell.log

Pero quiero ejecutar lo anterior automáticamente cada vez que inicio Yakuake o abro una nueva pestaña.

El uso de .bashrc no funciona porque crea un bucle sin fin cuando 'script' abre una nueva sesión, que a su vez lee .bashrc e inicia otro 'script' y así sucesivamente.

Entonces, presumiblemente, necesito escribir un script de Yakuake / Konsole de alguna manera para ejecutar 'script' una vez que se abre una nueva pestaña. La pregunta es ¿cómo?

Respuesta:

Si alguien quiere grabar sus sesiones de terminal automáticamente, incluidas las sesiones SSH (!), Utilizando la utilidad de script comandos, aquí se explica cómo hacerlo.

Agregue la siguiente línea al final de .bashrc en su directorio de inicio, o de lo contrario /etc/bash.bashrc si solo desea registrar las sesiones de todos los usuarios. Probamos proceso padre de la cáscara no ser script y vuelva a ejecutar script .

Para Linux:

test "$(ps -ocommand= -p $PPID | awk '{print $1}')" == 'script' || (script -f $HOME/$(date +"%d-%b-%y_%H-%M-%S")_shell.log)

Para BSD y macOS, cambie el script -f al script -F :

test "$(ps -ocommand= -p $PPID | awk '{print $1}')" == 'script' || (script -F $HOME/$(date +"%d-%b-%y_%H-%M-%S")_shell.log)

¡Eso es todo!

Ahora, cuando abra una nueva terminal, verá:

Script started, file is /home/username/file_name.log

script escribirá sus sesiones en un archivo en su directorio de inicio 30-Nov-11_00-11-12_shell.log como 30-Nov-11_00-11-12_shell.log como resultado.

Más personalización:

  • Puede agregar sus sesiones a un archivo grande en lugar de crear uno nuevo para cada sesión con el script -a /path/to/single_log_file
  • Puede ajustar dónde se escriben los archivos cambiando la ruta después del script -f (Linux) o del script -F (BSD y macOS)

Esta respuesta asume que tiene un script instalado, por supuesto. En las distribuciones basadas en Debian, el script es parte del paquete bsdutils .

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım