Prerrequisitos:
Para realizar los pasos de esta guía, necesita los siguientes componentes:
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:
Para abordar estos problemas, hay un par de opciones:
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:
$ nohupY
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í:
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!