Cómo iniciar el comando de Linux en segundo plano y desconectar el proceso en la terminal

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:

  1. su terminal de control está lleno de tantos datos de salida y mensajes de error/diagnóstico.
  2. 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 Fondo  Ejecutar el comando de Linux en segundo plano 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  Iniciar el proceso de Linux en segundo plano 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  Proceso de Linux en ejecución en el mensaje de fondo  Mensaje de proceso de Linux ejecutándose en segundo plano 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  Mantener el proceso de Linux en ejecución después de cerrar la terminal 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 Linux en segundo plano después de cerrar Shell  Ponga el proceso Linux en segundo plano después de cerrar Shell 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.