Cómo ejecutar comandos Bash en segundo plano en Linux

Función de comandos en segundo plano

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

Lea también: Cómo utilizar el comando lsof en Linux para enumerar archivos abiertos

Índice
  1. Finalizar un comando con &
  2. & Después de una orden, entonces repúdela
  3. & Después de un comando con /dev/null
  4. Nohup, con & y /dev/null

Finalizar un comando con &

Si desea enviar un comando a segundo plano, use & al final hay una manera fácil de hacerlo. De esta manera, puede emitir un comando en segundo plano y continuar usando su terminal mientras se ejecuta. Sin embargo, tiene un inconveniente. Usando & no desconecta el comando 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 aún se imprimirá, lo que puede distraer la atención.

Captura de pantalla de 2021 01 14 16 21 23

Cuando se cierra la sesión del 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 dominio. Esa sintaxis es la siguiente:

Captura de pantalla de 2021 01 14 16 21 48

Usando & es bueno si necesitas posponer algo por un momento pero no esperes que continúe para siempre.

Lea también: Cómo utilizar el comando dd en Linux

& Después de una orden, entonces repúdela

Ejecutar 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 constantemente, incluso cuando finalice su sesión de terminal, puede usar el disown dominio.

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

Como se mencionó anteriormente, utilizando & empuja este comando a un segundo plano pero no lo separa de su usuario. Puedes 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 del 2021 01 14 16 26 01
Puedes distinguir simplemente el disown comando ahí dentro

Ahora puedes cerrar tu terminal y continuar con tu día. Seguirá canalizando cosas hacia STDOUT o STDERR, pero una vez que salgas y vuelvas a abrir tu terminal, no verás nada allí. Puede encontrar el comando nuevamente con el top o ps comandos y matarlo con el kill dominio.

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

Lea también: Cómo utilizar el comando Rm en Linux

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

Añadiendo & después de un comando, se enviará un comando al fondo, pero como resultado, el comando en segundo plano continuará imprimiendo mensajes en la terminal mientras la usa. Si desea evitar esto, considere redirigir el comando a /dev/null.

Captura de pantalla de 2021 01 14 16 31 33

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

Lea también: La guía definitiva para los comandos Apt y Apt-Get

Nohup, con & y /dev/null

A diferencia de los comandos anteriores, usando nohup le permite ejecutar un comando en segundo plano y mantenerlo ejecutándose. ¿Cómo? nohup omite la señal HUP (señal de colgar), 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 pasará a segundo plano con un solo comando.

nohup COMMAND &>/dev/null &
Captura de pantalla de 2021 01 14 16 32 43

Lea también: Cómo generar certificados SSL en Linux usando OpenSSL

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

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

Por suerte, comandos como nohup o disown siguen siendo una realidad y pueden cerrar la brecha a la hora de pasar programas como este a un segundo plano. No son perfectos ni sofisticados, 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 conocer.

Lea también: Cómo utilizar cURL para la transferencia de datos de la línea de comandos y más

¡Suscríbete a nuestro boletín!

Nuestros últimos tutoriales entregados directamente a su bandeja de entrada

Juan Perkins

John es un joven profesional técnico apasionado por educar a los usuarios sobre las mejores formas de utilizar su tecnología. Posee certificaciones técnicas que cubren temas que van desde hardware informático hasta ciberseguridad y administración de sistemas Linux.

Subir