Bash puede hacer todo esto por sí solo, y no será necesario instalar programas adicionales. Este artículo repasará varias maneras en las que usted puede empujar los programas de la terminal en segundo plano y mantenerlos allí. Cada método listado es bueno para su propio caso de uso especial.
Finalizar un comando con &
Si quieres poner un comando en segundo plano, usar & al final es una forma fácil de hacerlo. Aunque viene con una trampa. Usar & no desconecta el comando de ti; sólo lo empuja en segundo plano para que puedas seguir usando un terminal.
comando &
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>i
Cuando se cierra la sesión de terminal, el comando termina. Usar &es bueno si necesitas empujar algo un poco, pero no esperes que continúe para siempre.
& Después de una orden, entonces repudiarla
Ejecutar un comando con just &lo empuja hacia atrás y lo mantiene en funcionamiento mientras la ventana de la terminal esté abierta. Sin embargo, si desea mantener este comando ejecutándose de forma constante, incluso con la sesión de terminal terminada, puede utilizar el comando disown.
Para usar este método, primero empieza añadiendo un &.
comando &
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>i
Como se mencionó anteriormente, usar & empuja este comando al fondo pero no lo separa de su usuario. Puede verificar esto escribiendo los trabajos en el terminal. Mostrará el comando ejecutándose en segundo plano.
Simplemente escriba disown en el shell, y eso es lo que hará (y podrá verificar esto una vez más con el comando jobs).
& After a Command with /dev/null
Agregar & 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 a medida que lo estés usando. Si desea evitarlo, considere la posibilidad de redirigir el comando a /dev/null.
comando &>/dev/null &
Esto no impide que el comando se cierre cuando el terminal se cierra. Sin embargo, como se mencionó anteriormente, es posible usar disown para desconocer el comando en ejecución lejos del usuario.
Nohup, con & y /dev/null
A diferencia de los comandos anteriores, el uso de nohup le permite ejecutar un comando en segundo plano y mantenerlo en ejecución. ¿Cómo? Nohup evita la señal HUP (colgar señal), lo que permite ejecutar comandos en segundo plano incluso cuando el terminal está apagado. Combina 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 comando.
nohup command &>/dev/null &
Conclusión
La mayoría de los programas de terminal en Linux hoy en día tienen características incorporadas que les permiten ejecutarse en segundo plano con poco esfuerzo. Junto con eso, los sistemas init modernos (como systemd ) pueden permitir a los usuarios iniciar programas como servicios al arrancar o cuando sea.
Aún así, algunos programas en Linux carecen de la capacidad de ejecutarse como un demonio o integrarse con sistemas init modernos. Esto es un verdadero inconveniente, pero es comprensible, ya que no todos los desarrolladores tienen la habilidad o el tiempo para añadir nuevas características.
Afortunadamente, los comandos como nohupor disown siguen siendo una realidad y todavía pueden cerrar la brecha en el movimiento de programas como este a un segundo plano. No son perfectos ni elegantes, pero hacen el trabajo cuando es necesario.
¿Cómo se mueven los programas de terminal en ejecución en segundo plano? Cuéntanos más abajo!
Crédito de la imagen: Una terminal-cuatro pantallas