Cómo iniciar el comando Linux en segundo plano y separar el proceso en el terminal

Cómo iniciar el comando Linux en segundo plano y separar el proceso en el terminal
En esta guía, aprenderemos cómo ejecutar un comando en segundo plano y cómo separar los procesos del terminal.

Prerrequisitos:

Para realizar los pasos de esta guía, necesita los siguientes componentes:

  • Un sistema funcional de Linux. Obtenga más información sobre cómo configurar una VM Ubuntu en VirtualBox.
  • Acceso a un usuario no raíz con permiso de sudo.

Ejecutando los procesos desde la terminal

Siempre que ejecute un comando, los procesos se generan debajo del terminal. Si el terminal está cerrado, todos los procesos asociados se terminan automáticamente. En ciertas situaciones, puede ser inconveniente. Por ejemplo:

  • Cantidad abrumadora de datos de salida y mensajes de error/diagnóstico
  • Cierre accidental del terminal que resulta en la terminación de procesos potencialmente misioneros, etc.

Para abordar estos problemas, hay un par de opciones:

  • Ejecutando los procesos en segundo plano
  • Separar los procesos de la terminal

Los procesos que se ejecutan en el fondo no abrumarán la salida del terminal. Además, el terminal es libre de ejecutar los comandos adicionales. Para los procesos separados, no terminarán incluso si el terminal está cerrado.

Iniciar los procesos en segundo plano

En muchos casos, un comando puede tardar bastante en completar. En general, el usuario se ve obligado a esperar hasta que termine el comando. Por ejemplo, cuando está utilizando un editor de texto, el shell no está disponible hasta que el editor esté cerrado.

Para demostrar, usamos el comando "Sí":

$ hombre sí

Método 1:

Hay un par de formas en que podemos enviar el proceso de ejecución al fondo.

Primero, detenemos el proceso sin terminarlo. Para hacerlo, ejecute el siguiente comando y presione "Ctrl + Z":

$ sí "hola mundo"> /dev /null

Ahora, ejecute el comando "BG" para enviar el proceso en segundo plano:

$ BG

Una vez empujado hacia el fondo, el proceso se reanuda. El siguiente comando enumera todos los trabajos en ejecución en segundo plano:

$ empleos

Método 2:

En el método anterior, el proceso comenzó a funcionar en primer plano. Hemos detenido el proceso, lo enviamos al fondo, luego lo reanudamos. En su lugar, podemos ejecutar el proceso directamente en segundo plano.

Para hacerlo, agregue el signo "&" al final del comando:

$ sí "Oh Long Johnson"> /dev /null &

Aquí, los procesos generados se ejecutan automáticamente en segundo plano. Para verificar, consulte la lista de trabajos de fondo:

$ empleos

Método 3:

También podemos iniciar los procesos en segundo plano con la ayuda de TMUX, un poderoso multiplexor que puede administrar múltiples sesiones terminales dentro de una sola ventana. No viene preinstalado en Linux. Sin embargo, está disponible para todas las principales distribuciones de Linux. Obtenga más información sobre la instalación de TMUX en Linux.

En el siguiente ejemplo, usamos TMUX para hacer ping a un objetivo y registrar la salida:

$ tmux new -d 'ping -c 9 127.0.0.1> ping.registro'

El archivo de registro verifica si el comando se ejecuta correctamente o no:

$ Cat Ping.registro

Es solo un ejemplo de lo que Tmux puede hacer. Obtenga más información sobre TMUX con ejemplos.

Devolver los trabajos al primer plano

Si desea devolver un trabajo en primer plano, usamos el comando "FG". También necesitamos el número de trabajo del comando de trabajos.

Primero, determine el trabajo que desea llevar al primer plano:

$ empleos

Ahora, use el comando "FG":

$ FG %

Separar los procesos de la terminal

Cualquier proceso asociado con un terminal se termina una vez que se cierra el terminal, ya sea que se ejecute en primer plano o en el fondo. Para evitar la terminación del proceso, disociamos el proceso objetivo del terminal/carcasa.

Método 1:

Para repudiar un proceso, primero necesitamos un proceso de fondo:

$ sí "Qwerty"> /dev /null &

Verifique la lista de trabajos de fondo en ejecución:

$ empleos

Tenga en cuenta el número de serie del trabajo de fondo objetivo. Ahora, use el comando "repudente" para separarlo del terminal:

$ de reposo %

El trabajo objetivo ahora debería desaparecer de la lista de trabajos:

$ empleos

Sin embargo, aún puede ver el proceso ejecutándose en segundo plano:

$ ps aux

Método 2:

Otra forma de separar un proceso del terminal principal es usar el comando "Nohup". Mantiene un proceso en funcionamiento en segundo plano incluso después de cerrar el terminal.

El uso de "Nohup" es el siguiente:

$ nohup Y

Verifique si el trabajo se crea con éxito:

$ empleos

Método 3:

Este método separa por completo el proceso objetivo. Es una forma más efectiva de separar las aplicaciones GUI.

Por ejemplo, para iniciar el Firefox y separarlo por completo desde el terminal, use el siguiente comando:

$ Firefox /dev/null &

Aquí:

  • El /dev/nulo es un dispositivo especial en Linux que elimina los datos que se le escriben.
  • En el comando anterior, la entrada se lee y la salida se envía a /dev/nulo. Obtenga más información sobre las otras formas de usar /dev /null.

Conclusión

Demostramos las diversas formas de ejecutar un proceso en segundo plano. También mostramos las formas de separar un proceso del terminal principal. Estas técnicas pueden ser útiles cada vez que trabajan con el terminal o ejecutando un script.

Si necesita ejecutar ciertos comandos en un patrón específico, podemos descargarlo como un servicio Systemd. Para máquinas remotas, también podemos usar las herramientas de terceros como Ansible para automatizar casi todo.

Computación feliz!