Cómo ejecutar comandos Bash en segundo plano en Linux

Característica de comandos en segundo plano

No hay nada más molesto que ejecutar un comando en tu terminal y hacerlo funcionar durante minutos, a veces horas, y no poder volver a usar tu 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.

Finalizar un comando con &

Si desea enviar un comando en segundo plano, use & al final es una forma fácil de hacerlo. De esta manera, puede emitir un comando en segundo plano y continuar usando su terminal mientras se ejecuta. Sin embargo, viene con una trampa. Utilizando & no desconecta el comando lejos de usted; simplemente lo empuja a un segundo plano. Esto significa que mientras intentas usar la terminal, cualquier cosa que el comando quiera enviar STDOUT o STDERR todavía 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 eliminar el comando emitiendo el jobs comando, encontrar el número del comando que se está ejecutando y eliminarlo con el kill mando. Esa sintaxis es la siguiente:

Captura de pantalla de 2021 01 14 16 21 48

Utilizando & es bueno si necesita retrasar algo por un tiempo pero no espera que continúe para siempre.

& Después de una orden, luego repítala

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

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

Como se mencionó anteriormente, usando & coloca este comando en 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 lo hará. (Y puede verificar esto una vez más con el jobs mando.)

Captura de pantalla de 2021 01 14 16 26 01
Puedes distinguir el disown comando allí

Ahora puede cerrar su terminal y continuar con su día. Seguirá entonando cosas para STDOUT o STDERR, pero una vez que salga y vuelva a abrir su terminal, no verá nada allí. Puede encontrar el comando nuevamente con el top o ps comandos y matarlo con el kill mando.

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

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

Añadiendo & después de que un comando empujará un comando en segundo plano, pero como resultado, el comando en segundo plano continuará imprimiendo mensajes en el 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 evita que el comando se cierre cuando se cierra el terminal. Sin embargo, como se mencionó anteriormente, es posible usar disown para rechazar el comando en ejecución lejos del usuario. También puede eliminarlo en 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, usar nohup le permite ejecutar un comando en segundo plano y mantenerlo en ejecución. ¿Cómo? nohup omite la señal HUP (señal colgada), lo que hace posible 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 un segundo plano con un solo comando.

Captura de pantalla de 2021 01 14 16 32 43

La mayoría de los programas de terminal en Linux 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, 5 de las mejores distribuciones de Linux para usuarios de Windows en 2021 y 15 comandos LS que necesita saber .