GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo iniciar el comando de Linux en segundo plano y separar 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 una terminal, pueden ocurrir dos problemas:

  1. su terminal de control está lleno de muchos datos de salida y mensajes de error/diagnóstico.
  2. en caso de que se cierre la terminal, el proceso junto con sus procesos secundarios se terminarán.

Para lidiar con estos dos problemas, debe separar por completo 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 siguiente ejemplo de comando tar, simplemente presione Ctrl+Z para detenerlo, 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 jobs . Sin embargo, su stdin , salida estándar , stderr todavía están unidos a la terminal.

$ tar -czf home.tar.gz .
$ bg
$ jobs

También puede ejecutar un proceso directamente desde el fondo usando el signo &, & firmar.

$ tar -czf home.tar.gz . &
$ jobs

Mire el ejemplo a continuación, 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 . &
$ jobs

Mantener los procesos de Linux en ejecución después de salir de la terminal

Usaremos disown comando, se usa después de que se haya iniciado un proceso y puesto en segundo plano, su trabajo es eliminar un trabajo de shell de la lista de trabajos activos del shell, por lo tanto, no usará fg , bg comandos en ese trabajo en particular nunca más.

Además, cuando cierre la terminal de control, el trabajo no se colgará ni enviará un SIGHUP a cualquier trabajo secundario.

Lectura sugerida: 5 formas de mantener las sesiones y los procesos SSH remotos en ejecución

Echemos un vistazo al siguiente ejemplo del uso de diswon bash función integrada.

$ sudo rsync Templates/* /var/www/html/files/ &
$ jobs
$ disown  -h  %1
$ jobs

También puedes 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

Separar un proceso Linux de la 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 la interfaz gráfica de usuario (GUI ) aplicaciones como firefox:

$ firefox </dev/null &>/dev/null &

En Linux, /dev/null es un archivo de dispositivo especial que cancela (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 comentario 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. Nuevamente, cuando cierre una terminal de control, su proceso y los procesos secundarios se cancelarán.

Es importante destacar que, para cualquier pregunta o comentario sobre el tema, comuníquese con nosotros utilizando el formulario de comentarios a continuación.


Linux
  1. ¿Qué es un comando Chown en Linux y cómo usarlo?

  2. Cómo administrar trabajos en segundo plano de Linux con los comandos fg y bg

  3. Cómo encontrar y matar el proceso Zombie en Linux

  4. ¿Cómo usar vi para editar un comando en la terminal en Linux?

  5. ¿Cómo iniciar programas GUI Linux desde la línea de comandos, pero separados de la línea de comandos?

Cómo localizar y matar un proceso con terminal Linux

Cómo iniciar y finalizar un proceso en Ubuntu 20.04 LTS

Cómo trabajar con procesos en primer plano y en segundo plano en Linux

Cómo instalar y usar el comando de localización en Linux

Cómo MATAR un proceso en Linux

Cómo instalar y usar el comando fd en Linux