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.
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:
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.)
Solo 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.
El 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
.
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 &
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.