Hoy leí un artículo muy interesante para crear el log de la ejecución de un script en bash.

Existen muchos métodos, tales como bash -x, script (utilidad) o la famosa redirección «>>«.Este particularmente utiliza exec.

Simplemente basta con agregar al inicio de cualquier script en bash:

touch file.log
exec 1> >(tee -a file.log) 2>&1

Lo cual genera el archivo «file.log» en el mismo directorio donde estamos ubicados. Es distinto al ejemplo dado en el artículo relacionado, el cual redirige con la utilidad «logger» al módulo de syslog (Esto por una necesidad particular).

Esta sería la redirección del output de un script bash a SysLog:

exec 1> >(logger -s -t $(basename $0)) 2>&1

El original probablemente viene de Eric Lindvall en Twitter.

🙂