STDOUT & STDERR

¡Buenos días Bella Comunidad!

Como los han tratado los sistemas estos días???
El día de hoy les traemos algo acerca de la re-dirección de la salida y de los errores, más conocidos como STDOUT y STDERR.

Si bien es útil en el día a día de nuestros comandos, donde se le saca el mayor jugo es los scripts de shell, pudiendo redireccionar output al estilo log, o incluso evitar cualquier tipo de error arrojado en la consola, cosa que está bueno evitar al correr scripts y más si luego van a ser croneados.

Para ello vamos a pasar a explicar cada uno de ellos, y que se puede hacer con esto:

Standard outputs o STDOUT = es la salida del comando per se, lo que muestra al ser ejecutado….

Standard errors o STDERR = es la salida de errores sobre nuestra consola, entendiendo por error cualquier tipo de desviación que pueda tener nuestro comando.

Ejemplo sobre comando redireccionando STDOUT:




xxxxxxxx@XXXXXXX:~$ ip a s | grep inet > ips.txt  
xxxxxxxx@XXXXXXX:~$ cat ips.txt
inet 127.0.0.1/8 scope host lo

Ejemplo sobre STDERR:

En un find ejecutado sobre / con un user distinto de root, suelen aparecer errores cuando intenta ingresar al /proc/ ya que no tiene permisos para incluso verlos, es por ello que suele evitarse cualquier tipo de error, para dejar mas limpia la salida.




xxxxxxxx@XXXXXXX:~$ find . / -name 'nahuel'
find: ‘/sys/kernel/debug’: Permission denied
find: ‘/sys/fs/pstore’: Permission denied
find: ‘/root’: Permission denied

Ejemplo sobre comando redireccionando STDERR:


xxxxxxxx@XXXXXXX:~$ find . / -name 'nahuel' 2>/dev/null
xxxxxxxx@XXXXXXX:~$

Puede ser enviado todo el output hacia el /dev/null, de la siguiente manera:


xxxxxxxx@XXXXXXX:~$ find . / -name 'nahuel' >/dev/null 2>&1
xxxxxxxx@XXXXXXX:~$ 

También les dejamos un pequeño ejemplo de como puede ser útil al incluirlo sobre shell-scripting:



//// Dentro del código
echo "El script se encuentra corriendo" > $PATH_LOGS/depuracion-tmp.$(date +%Y-%m-%d).log  2>&1

En este próximo ejemplo no solo redireccionamos la salida a un path en específico, si no que también le adiccionamos (Append) con el doble > (>>), es decir que no va a sobreescribir el file, si no que va a adiccionarlo.







//// Dentro del código
echo "El script se encuentra corriendo" >> $PATH_LOGS/depuracion-tmp.$(date +%Y-%m-%d).log  2>&1
SCRIPT
SCRIPT
SCRIPT
echo "El script ha finalizado" >> $PATH_LOGS/depuracion-tmp.$(date +%Y-%m-%d).log  2>&1

De está manera se va a ir generando gradualmente el log del script, obviamente también podríamos redireccionar el STDERR a otro log, por cualquier cosa que queramos ver posteriormente a la corrida del mismo.

Bueno, esto fue un poco de STDOUT&STDERR y los usos más comunes.

¡¡¡Nos vemos en la próxima entrega!!!

Comentarios de Facebook

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *