Usando nohup en Linux para ejecutar comandos independientes de la cónsola

El comando nohup te permite ejecutar comandos el background y cerrar la consola, sin tener que esperar que se termine la ejecución de dicho comando.

Cuando ejecutamos un comando en la consola de Linux, la ejecución de dicho comando está atada a la vida del proceso de la consola mediante un enlace denominado hup, algo totalmente lógico pues como proceso, el terminal está lanzando otro proceso por lo que la vida de ambos está enlazada.

El problema (por llamarlo de alguna manera) viene cuando ejecutamos comandos que toman un tiempo considerable (como un backup) y no queremos (o no podemos) mantener la consola abierta. Me sucede cuando quiero ejecutar un respaldo en mi servidor VPS usando SSH e inmediatamente desconectarme para hacer otra cosa o simplemente descansar.

La solución viene con el comando nohup, que le dice al gestor de procesos de Linux que queremos que ambos procesos (la consola y el comando que vamos a ejecutar) tengan una vida útil por separado, por lo que podremos ejecutar el comando y desconectarnos (cerrar la consola) y el comando se seguirá ejecutando en el servidor. Lo suelo usar con frecuencia también cuando voy a dejar algo descargando en mi Raspberry Pi 3.

La sintaxis de nohup es sencilla

Sin embargo, podemos potenciar el comando mediante ciertos añadidos simples que veremos a continuación:

  • Si agregamos un ámpersand (&) al final del comando, le decimos que queremos que el comando se ejecute en background. Esto significa que correrá en segundo plano, con menor prioridad que un proceso en primer plano pero que aprovechará los recursos (CPU, RAM y Disco) que el sistema operativo le asigne cuando baje el consumo de recursos de los procesos en foreground (primer plano).

Podemos redireccionar la salida del comando a un archivo de la siguiente forma:

Así, cuando volvamos a conectarnos, veremos la salida de la ejecución del comando grabada en el archivo salida.txt, porque obviamente no veremos la salida en tiempo real, que es la razón por la que estamos usando nohup en primera instancia.

Y si el comando da error? Podemos redireccionarlo a otro archivo para consultarlo posteriormente

También podemos redireccionar los errores directamente a /dev/null si no nos interesa ver los errores que hubo ejecutando el comando, quedando todo así

No sabes qué es /dev/null? Wikipedia lo explica mejor que yo:

En sistemas operativos tipo Unix, */dev/null* o null device (‘periférico nulo’) es un archivo especial que descarta toda la información que se escribe o redirige en él. A su vez, no proporciona ningún dato a cualquier proceso que intente leer de él, devolviendo simplemente un EOF o fin de fichero.

Por último, podemos subir o bajar la prioridad del comando a ejecutar combinando nohup y el comando nice. Todo quedaría así

Donde 19 es la prioridad más baja que puedes asignarle al proceso. Estas prioridades van desde -20 (la prioridad más alta) a 19 (la prioridad más baja).

Referencia:
nohup
/dev/null
nice

Cómo saber qué distro de Linux estamos usando

Cuando me toca trabajar en un servidor Linux sin capa gráfica (como debe ser un servidor en producción), sucede que a veces no sé en qué distribución estoy trabajando (varía de un cliente a otro), lo cual es importante saberlo porque básicamente no es lo mismo un servidor con Debian o Ubuntu que uno con Red Hat o CentOS.

Si tuviera capa gráfica bastaría con echar un vistazo al escritorio para saber en qué distribución de Linux me encuentro, pero como no tiene, para saber qué distro estoy usando debo ejecutar en la consola el siguiente comando:
Lo cual nos da como salida
Este comando funciona independientemente de la distro que usemos, por lo cual lo prefiero por encima a otras alternativas para detectar la distro. Por ejemplo, al ejecutarlo sobre mi Raspberry Pi 3 obtengo lo siguiente:
Y listo, con eso ya sabemos tanto el sistema operativo que estamos usando como la versión del mismo, lo cual nos permitirá tomar decisiones en cuanto a los paquetes a instalar, configuraciones, repositorios y sobre todo, sistema de paquetes a usar (CentOS usa yum, Debian usa apt).

Cómo acceder a tus pendrives desde la cónsola en Linux

Siempre es bueno aprender cómo usar tu pendrive desde el terminal de Linux.

Si estás usando un pendrive en Linux y necesitas acceder al mismo desde la cónsola, para por ejemplo, copiar o borrar archivos, primero necesitas saber cómo se denomina tu unidad USB dentro del subsistema de archivos en Linux. Para ello, basta con teclear el siguiente comando:

La salida, debe ser algo como lo siguiente:

En este caso, puedes ver que mi unidad USB se denomina sdb1 y puedes accederla entrando a la carpeta /media/jrojas/DISCOUSB

¿Fácil, no?

Cómo instalar Java en Ubuntu 16.10

Instalar Java en Ubuntu es un proceso simple, basta con usar la cónsola y la descarga e instalación es automática

Para instalar Java en Ubuntu 16.10 (también sirve para 16.04) basta con abrir la línea de comandos (cónsola) y ejecutar

Si por casualidad necesitas Java 7 en vez de Java 8, basta con ejecutar

 

Cómo instalar las Virtual Box Additions en Ubuntu

Cuando creamos una máquina virtual en VirtualBox, de cualquier sistema Linux, Ubuntu por ejemplo, siempre es recomendable instalar las VirtualBox Guest Additions, que son un conjunto de mejoras que te permitirán entre otras cosas, mejorar el tamaño y resolución de la pantalla mostrada del sistema operativo virtualizado, algo que a veces es totalmente necesario por lo pequeño que se muestra al no detectar correctamente nuestra resolución/tamaño de pantalla.

VirtualBox

Para instalar las Virtual Box Additions tenemos que ir al menú Devices(Dispositivos) > Insert Guest Additions CD Image… y en el sistema virtualizado nos aparecerá un CD virtual, donde tenemos el programa a instalar. En Windows basta con ejecutar el .exe, pero en Linux debemos ejecutar el siguiente comando:

sudo sh /media/usuario/VBOXADDITIONS_XXX/VBoxLinuxAdditions.run

Donde evidentemente debes sustituir “usuario” por tu nombre de usuario y XXX por la versión de VirtualBox que estés ejecutando.

VirtualBox Guest Additions

Luego de eso debes reiniciar tu máquina virtual y listo, las mejoras en rendimiento y resolución de pantalla se verán de inmediato.