Background Commands Feature

Cómo ejecutar comandos Bash en segundo plano en Linux

No hay nada más molesto que ejecutar un comando en su terminal y que se ejecute durante minutos, a veces horas, y no poder volver a usar su terminal. Claro, puede usar pestañas, pero esa es una solución torpe, y no siempre es óptima porque es posible que desee ver las actualizaciones mientras trabaja. Aquí le mostramos algunas formas diferentes de ejecutar comandos bash en segundo plano en Linux.

Terminar un comando con &

Si desea enviar un comando a un segundo plano, utilice & al final es una manera fácil de hacer eso. De esta manera, puede emitir un comando en segundo plano y continuar usando su terminal mientras se ejecuta. Sin embargo, viene con una trampa. Usando & no desconecta el comando lejos de ti; simplemente lo empuja a un segundo plano. Esto significa que mientras intenta usar la terminal, cualquier cosa que el comando quiera enviar a STDOUT o STDERR aún se imprimirá, lo que puede distraer.

Captura de pantalla de 2021 01 14 16 21 23

Cuando se cierra la sesión de terminal, el comando finaliza. También puede matar el comando emitiendo el jobs comando, encontrar el número del comando que se está ejecutando y matarlo con el kill dominio. Esa sintaxis es la siguiente:

Captura de pantalla de 2021 01 14 16 21 48

Usando & es bueno si necesita retrasar algo por un momento, pero no espere que continúe para siempre.

& Después de una orden, luego repudiarla

Ejecutar un comando con solo & lo empuja hacia atrás y lo mantiene funcionando mientras la ventana del terminal esté abierta. Sin embargo, si está buscando mantener este comando ejecutándose de manera constante, incluso con la finalización de la sesión de su terminal, puede usar el disown dominio.

Para usar este método, comience agregando un &.

Como se mencionó anteriormente, usando & empuja este comando a un segundo plano pero no lo separa de su usuario. Puede verificar esto escribiendo jobs en la terminal. Mostrará el comando ejecutándose en segundo plano como vimos antes.

Sólo tipo disown en el caparazón, y hará precisamente eso. (Y puedes verificar esto una vez más con el jobs dominio.)

Captura de pantalla de 2021 01 14 16 26 01Solo puedes distinguir el disown Comando allí

Ahora puede cerrar su terminal y continuar con su día. Seguirá canalizando cosas para STDOUT o STDERR, pero una vez que salga y vuelva a abrir su terminal, no verá nada allí. Puede encontrar el comando de nuevo con el top o ps ordena y mátalo con el kill dominio.

Captura de pantalla de 2021 01 14 16 28 42El trabajo repudiado es el segundo, con el PID 16238.

& Después de un comando con /dev/null

agregando & después de un comando empujará un comando en segundo plano, pero como resultado, el comando en segundo plano continuará imprimiendo mensajes en la terminal mientras lo usa. Si está buscando evitar esto, considere redirigir el comando a /dev/null.

Captura de pantalla de 2021 01 14 16 31 33

Esto no impide que el mando se cierre cuando se cierra el terminal. Sin embargo, como se mencionó anteriormente, es posible usar disown para repudiar el comando en ejecución lejos del usuario. También puede eliminarlo con cualquiera de los métodos mencionados anteriormente si no desea que se ejecute más.

Nohup, con & y /dev/null

A diferencia de los comandos anteriores, usando nohup le permite ejecutar un comando en segundo plano y mantenerlo en ejecución. ¿Cómo? nohup pasa por alto la señal HUP (colgar la señal), lo que permite ejecutar comandos en segundo plano incluso cuando el terminal está apagado. Combine este comando con la redirección a «/dev/null» (para evitar que nohup cree un archivo nohup.out), y todo pasa a segundo plano con un solo comando.

nohup COMMAND &>/dev/null &

Captura de pantalla de 2021 01 14 16 32 43

La mayoría de los programas de terminal en Linux hoy en día tienen características integradas que les permiten ejecutarse en segundo plano con poco esfuerzo. Junto con eso, los sistemas de inicio modernos (como systemd) pueden permitir a los usuarios iniciar programas como servicios en el arranque o en cualquier momento.

Aún así, algunos programas en Linux carecen de la capacidad de ejecutarse como un demonio o integrarse con sistemas de inicio modernos. Este es un inconveniente real, pero es comprensible, ya que no todos los desarrolladores tienen la habilidad o el tiempo para agregar nuevas funciones.

Afortunadamente, comandos como nohup o disown siguen siendo una realidad y pueden cerrar la brecha al mover programas como este a un segundo plano. No son perfectos ni elegantes, pero hacen el trabajo cuando es necesario.

Si disfrutó de este artículo de Linux, asegúrese de consultar algunos de nuestros otros contenidos de Linux, como cómo conectar su cuenta de Google a GNOME Shell, las mejores distribuciones de Linux para usuarios de Windows y los comandos LS que necesita saber.

Experto Geek - Tu Guía en Tendencias Tecnológicas