
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:
- Su terminal de control está lleno de muchos datos de salida y mensajes de error/diagnóstico.
- 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 jobs
Sin embargo, su entrada estándar, salida estándary Error estándar Todavía unido a la terminal.
$ tar -czf home.tar.gz . $ bg $ jobs
También puede ejecutar un proceso directamente desde el fondo usando el signo ampersand, &
símbolo.
$ tar -czf home.tar.gz . & $ jobs

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

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

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

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.
Agradecemos su apoyo interminable.