Table of Contents
Cómo iniciar el comando de Linux en segundo plano y desconectar el proceso en la terminal
En esta guía, sacaremos a la luz un concepto simple pero importante en el manejo de procesos en un sistema Linux, que es cómo separar completamente un proceso de su terminal de control.
Cuando un proceso está asociado con un terminal, pueden ocurrir dos problemas:
- su terminal de control está lleno de tantos datos de salida y mensajes de error/diagnóstico.
- en el caso de que el terminal esté cerrado, el proceso junto con sus procesos secundarios finalizará.
Para solucionar estos dos problemas, es necesario desconectar totalmente un proceso de una terminal de control. Antes de pasar a resolver el problema, veamos brevemente cómo ejecutar procesos en segundo plano.
Cómo iniciar un proceso o comando de Linux en segundo plano
Si un proceso ya está en ejecución, como el ejemplo del comando tar a continuación, simplemente presione Ctrl + Z para detenerlo y luego ingrese el comando bg para continuar con su ejecución en segundo plano como un trabajo.
Puede ver todos sus trabajos en segundo plano escribiendo trabajos. Sin embargo, sus stdin. stdout. stderr. todavía están unidos a la terminal.
$ tar-czf home.tar.gz. $ bg $ trabajos
Ejecutar el comando de Linux en segundo plano freestar.config.enabled_slots.push
También puede ejecutar un proceso directamente desde el fondo utilizando el signo & y el signo &.
$ tar-czf home.tar.gz . & $ trabajos
Iniciar el proceso de Linux en segundo plano
Eche un vistazo a En el ejemplo siguiente, aunque el comando tar se inició como un trabajo en segundo plano, se envió un mensaje de error a la terminal, lo que significa que el proceso aún está conectado a la terminal de control.
$ tar-czf home.tar.gz. & $ trabajos
Mensaje de proceso de Linux ejecutándose en segundo plano
Mantener los procesos de Linux en ejecución después de salir de la terminal
Usaremos el comando disown. se usa después de que se haya iniciado un proceso y se haya puesto en segundo plano, su trabajo es eliminarlo un trabajo de shell de la lista de trabajos activos del shell, por lo tanto, ya no utilizará los comandos fg, bg en ese trabajo en particular.
Además, cuando cierre el terminal de control nal, el trabajo no se bloqueará ni enviará un SIGHUP. a ningún trabajo secundario.
Lectura sugerida: 5 formas de mantener en ejecución las sesiones y los procesos SSH remotos
Echemos un vistazo al siguiente ejemplo de uso de diswon. función incorporada de bash.
$ sudo rsync Templates/*/var/www/html/files/& $ jobs $ disown-h% 1 $ jobs
Mantener el proceso de Linux en ejecución después de cerrar la terminal
También puede usar nohup comando, que también permite que un proceso continúe ejecutándose en segundo plano cuando un usuario sale de un shell.
$ nohup tar-czf iso.tar.gz Templates/* & $ jobs
Ponga el proceso de Linux en segundo plano después de cerrar el shell
Desconecte un proceso de Linux del terminal de control
Por lo tanto, para separar completamente un proceso de una terminal de control, use el formato de comando a continuación, esto es más efectivo para aplicaciones de interfaz gráfica de usuario ( GUI. como Firefox:
$ firefox /dev/null &
En Linux, /dev/null. es un archivo de dispositivo especial que elimina (elimina) todos los datos escritos en él, en el comando anterior, la entrada se lee y la salida se envía a /dev/null.
Lectura sugerida: 10 ejemplos de comandos de pantalla para desconectar sesiones de terminal
Como observación final, siempre que un proceso esté conectado a un terminal de control, como usuario, verá varias líneas de salida de los datos del proceso, así como mensajes de error en su terminal. Una vez más, cuando cierre el terminal de control, su proceso y los procesos secundarios serán terminados.
Es importante destacar que, para cualquier pregunta o comentarios sobre el tema, comuníquese con nosotros utilizando el formulario de comentarios a continuación.