Tutoriales

Ejecute comandos de Linux en segundo plano y desconéctese de la terminal

En esta guía, aclararemos un concepto simple pero importante del manejo de procesos en los sistemas Linux, a saber, cómo separar completamente un proceso de su terminal de control.

Cuando un proceso de Linux está asociado a una terminal, pueden surgir 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 y sus hijos finalizarán.

Para manejar estos dos problemas, debe separar completamente el proceso del terminal de control. Antes de ponernos manos a la obra, analicemos brevemente cómo ejecutar procesos en segundo plano en Linux.

Ejecutar comandos o procesos de Linux en segundo plano

Si el proceso ya se está ejecutando, como el siguiente ejemplo de comando tar, simplemente presione Ctrl+Z detenerlo e introducir el comando bg Continúa ejecutándose en segundo plano como un trabajo.

Puede ver todos los trabajos en segundo plano escribiendo jobsSin embargo, su entrada estándar, salida estándary Error estándar Todavía unido a la terminal.

$ tar -czf home.tar.gz .
$ bg
$ jobs
Ejecutar comandos de Linux en segundo plano

También puede ejecutar un proceso directamente desde el fondo usando el signo ampersand, & símbolo.

$ tar -czf home.tar.gz . &
$ jobs
Iniciar un proceso de Linux en segundo plano
Iniciar un proceso de Linux en segundo plano

Mirando el ejemplo a continuación, aunque el comando tar se inició como un trabajo en segundo plano, todavía 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

tar: ./.config/etcher: Cannot open: Permission denied
Los procesos de Linux se ejecutan en mensajes de fondo
Los procesos de Linux se ejecutan en mensajes de fondo

Mantenga el proceso de Linux en ejecución después de cerrar la terminal

usaremos denegar comando, utilizado después de que el proceso ha terminado de ejecutarse y se coloca en segundo plano, lo que hace es eliminar un trabajo de shell de la lista de trabajos activos del shell, por lo que no usaría fg, bg El comando para ese trabajo en particular ya no se ejecuta.

Además, cuando cierra la terminal de control, los trabajos no se suspenden ni se envían registrarse Cualquier trabajo secundario.

Veamos el ejemplo de uso a continuación. abandonar bash funciones integradas.

$ sudo rsync Templates/* /var/www/html/files/ &
$ jobs
$ disown  -h  %1
$ jobs
Mantenga el proceso de Linux en ejecución después de cerrar la terminal
Mantenga el proceso de Linux en ejecución después de cerrar la terminal

También puedes usar nohup comando, que también permite que el proceso continúe ejecutándose en segundo plano mientras el usuario sale del shell.

$ nohup tar -czf iso.tar.gz Templates/* &
$ jobs
Ponga un proceso de Linux en segundo plano después de cerrar el shell
Ponga un proceso de Linux en segundo plano después de cerrar el shell

Separar el proceso de Linux en la terminal

Por lo tanto, para separar completamente un proceso del terminal de control, use el siguiente formato de comando, que es más eficiente para las GUI (interfaz gráfica de usuario) aplicaciones como Firefox:

$ firefox /dev/null &

En Linux, /dev/vacío es un archivo de dispositivo especial que anula el registro (se deshace de) todos los datos escritos en él, en el comando anterior, la entrada se lee y la salida se envía a /dev/vacío.

Como nota de cierre, si un proceso está conectado a una terminal de control, como usuario verá algunas líneas de salida para los datos del proceso, así como mensajes de error en la terminal. Del mismo modo, cuando cierre la terminal de control, su proceso y los procesos secundarios finalizarán.

Es importante que, para cualquier pregunta o comentario sobre este tema, contáctenos utilizando el formulario de comentarios a continuación.

Si aprecia el trabajo que hacemos en TecMint, debe considerar:

TecMint es el sitio comunitario de más rápido crecimiento y más confiable para artículos, guías y libros de Linux de cualquier tipo en la web. ¡Millones de personas visitan TecMint! Busque o explore miles de artículos publicados disponibles gratuitamente para todos.

Si le gusta lo que está leyendo, considere ofrecernos una taza de café (o 2) para agradecernos.

Apoyanos

Agradecemos su apoyo interminable.

LEER  ¿Qué es /dev/tty, /dev/tty0 y /dev/console en Linux?

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba