Diario del SysAdminLinux desde cero

Si no hay noticias son buenas noticias (no news good news)

Si no hay noticias son buenas noticias — No news good news.

Seguramente hemos escuchado esta frace en ingles en algún momento (No news good news) y sino seguro la vamos a escuchar si seguimos nuestro camino en linux.

¿Qué significa realmente esta fase y cómo nos afecta en el trabajo diario?

Si ejecutamos un comando y no nos devuelve nada quiere decir que el comando se ejecuto con éxito de lo contrario devuelve un mensaje de error.

Pongamos un ejemplo:

Si ejecutamos el comando ls para listar el contenido del directorio «/» veremos esto:


~$ ls /
bin etc lib32 obs-studio sbin tmp
boot home lib64 opt snap usr
cdrom initrd.img lost+found proc srv var
datos initrd.img.old media root sys vmlinuz
dev lib mnt run timeshift vmlinuz.old

Como vemos en el ejemplo se devolvió la salida por pantalla porque el directorio / existe y tiene un contenido para listar.
Sin embargo hay algo que no vemos que es el código de salida estándar para linux y UNIX, el cual podemos ver con el siguiente comando:

~$ echo $?
0

El código de salida del comando es 0 esto quiere decir que el comando se ejecuto correctamente y devolvió la salida a la terminal correctamente mostrando el contenido del directorio «/».
Ahora vamos a ejecutar el mismo comando pero vamos a pedirle al sistema operativo que liste el contenido de un directorio que no existe, el directorio que voy a usar se llama foo.


~$ ls /foo
ls: no se puede acceder a '/foo': No existe el archivo o el directorio

Como vemos el comando devolvio error porque el directorio foo no existe. Veamos que nos dice el código de la salida que no se ve.


~$ echo $?
2

Como vemos el código de salida devuelve el número 2 lo cual significa que hay un error en este caso no existe el archivo o directorio.

¿Qué conclusión podemos sacar?

La conclusión hasta aquí es la siguiente:
Cuando ejecutamos un comando y el código de salida devuelve 0 es que el comando se ejecuto bien si devuelve 2 o cualquier número distinto de 0 hay un error el comando no se ejecuto correctamente y tenemos que empezar a investigar porque. Los códigos de salida se establecen para que los programadores y los usuarios nos pongamos de acuerdo en como saber si algo salio bien o mal.

¿Los códigos de salida están estandarizados?

Los códigos de salida están estandarizados los podemos ver en la siguiente lista.
Los voy a poner el nuestro idioma y en ingles para respetar la filosofía y tradición.

Si no hay noticias son buenas noticias… Todos los procesos devuelven un codigo de estado este puede ser:
No news is good news … All processes return a status code, and you can expect that to be:

0 – success — El proceso salio bien.
1 – failure — El proceso fallo.
2 – abject failure — Fracase con todo éxito. (fracaso absoluto)

 

Para el ejemplo del comando ls que vimos anteriormente nos devolvió dos códigos distintos:

0 – Aqui tenes el listado del directorio que me pediste.
2 – Lo siento – El directorio que queres que liste no existe.

Conclusiones importantes.

Ahora podemos entender porque cuando levantamos un servicio con el comando systemclt start servicio el sistema no devuelve nada a la terminal (si no hay noticias son buenas noticias).
Cuando usemos scripts para evaluar algun proceso vamos a usar estos códigos de salida para saber cual es el camino por el cual tenemos que seguir.

 

 

Deja una respuesta

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