Cómo ejecutar el comando en el fondo en Linux

Cómo ejecutar el comando en el fondo en Linux

Ejecución de comandos o procesos en segundo plano en un sistema Linux se convierte en una tarea común si necesita liberar su terminal o desconectarse de una sesión SSH. Esto es especialmente cierto para los comandos que se ejecutan durante mucho tiempo, ya sea para escuchar eventos o completar su larga tarea.

Tenemos algunas opciones en Linux para ejecutar comandos en segundo plano. En esta guía, cubriremos algunos métodos diferentes y le mostraremos cómo usarlos a través de ejemplos.

En este tutorial aprenderás:

  • Cómo poner un comando de ejecución en el fondo
  • Cómo iniciar un comando en segundo plano
  • Cómo cerrar la terminal y mantener el trabajo de fondo en funcionamiento
  • Cómo usar el comando de pantalla
Poner un proceso en el fondo y moverlo al primer plano Requisitos de software y convenciones de línea de comandos de Linux
Categoría Requisitos, convenciones o versión de software utilizada
Sistema Cualquier distribución de Linux
Software Utilidades de Linux predeterminados, pantalla
Otro Acceso privilegiado a su sistema Linux como root o a través del sudo dominio.
Convenciones # - requiere que los comandos de Linux dados se ejecuten con privilegios raíz directamente como un usuario raíz o mediante el uso de sudo dominio
ps - Requiere que los comandos de Linux dados se ejecuten como un usuario regular no privilegiado

Poner un comando de ejecución en el fondo

Cuando ejecuta un comando que quiere continuar ejecutándose durante mucho tiempo, el problema es que su terminal actual se dedica al comando. No puede continuar usando el terminal, y tampoco puede cerrarlo, porque eso finalizará el comando que se ejecuta actualmente.

Si tiene un comando ejecutándose y necesita ponerlo en el fondo para liberar su terminal, puede presionar CTRL + Z en su teclado para detener el proceso. Aquí hay un ejemplo.

$ Sleep 10000 ^Z [1]+ Deting Sleep 10000 

Para ver una lista de trabajos en segundo plano, use el trabajos dominio.

$ Jobs -L [1]+ 1650 Deting Sleep 10000 


Para devolver un trabajo a primer plano, podemos usar el FG dominio.

$ FG 

Si tuviéramos múltiples trabajos detenidos, tendríamos que usar un signo porcentual y especificar la identificación de trabajo para que la apropiada vuelva a primer plano.

$ FG %1 

Genial, ahora podemos poner procesos en el fondo y traerlos de vuelta cuando los queramos más tarde. Pero, ¿qué pasa si queremos que el comando continúe ejecutándose mientras está en segundo plano?? Para eso, podemos usar el BG comando, seguido de un amperandés y la identificación de trabajo. El siguiente comando hará que nuestro trabajo de trabajo detenido, mientras lo mantenga en segundo plano.

$ bg %1 [1]+ dormir 10000 y 

Ahora podemos ver que el proceso todavía está en segundo plano, pero muestra un estado de "ejecutar" en lugar de "detenido."

$ Jobs -L [1]+ 1650 Running Sleep 10000 y 

Todavía hay una cosa a tener en cuenta. No puede cerrar su terminal actual, o estos trabajos de fondo se cerrarán. Si necesita cerrar su terminal y no quiere que estos comandos se detengan, entonces debe "repudiar" los trabajos (s). Si solo tiene un trabajo en segundo plano, el siguiente comando funcionará:

$ sin duda 

Si tiene múltiples, entonces deberá especificar la identificación de trabajo.

$ de repente %1 

Ya no verá el trabajo en su tabla de trabajos cuando ejecute el trabajos dominio. Ahora es seguro cerrar el terminal y su comando continuará ejecutando.

$ Jobs -l 

Aún puede vigilar su comando de ejecución usando el comando PS.

$ PS aux | Grep Sleep Linuxco+ 1650 0.0 0.0 8084 524 pts/0 S 12:27 0:00 Dormir 10000 

Y si desea evitar que el comando se ejecute, puede usar el comando kill y especificar la identificación del proceso.

$ Kill 1650 

Iniciar un comando en el fondo

Ahora hemos visto cómo poner un proceso de ejecución en el fondo y recordarlo más tarde. Pero también tenemos la opción de iniciar el comando en segundo plano al principio. Todo lo que necesitas hacer es poner un ampersand al final de cualquier comando de Linux.

$ Sleep 10000 y [1] 1900 


Al igual que antes, podemos ver el trabajo enumerado con el trabajos dominio. Esta vez, sin embargo, el trabajo ya se está ejecutando y no tuvimos que comenzar manualmente en segundo plano.

$ Jobs -l [1]+ 1900 que funciona con el sueño 10000 y 

Cerrar terminal y mantener el trabajo de fondo en funcionamiento

Ya hemos visto en un ejemplo anterior cómo podemos usar el renegar de comandar para asegurarse de que el comando continúe ejecutando después de cerrar nuestro terminal. Otra opción es el nohup dominio.

Nohup le dice a un proceso que ignore cualquier Suspiro (Hangup) señala que recibe. La señal de suspiro se envía a un trabajo de fondo siempre que el terminal actual esté cerrado. Por lo tanto, podemos tener un trabajo en segundo plano, cerrar la terminal y aún así verlo en segundo plano. Aquí hay un ejemplo.

$ Nohup Sleep 10000 y [1] 1908 Nohup: Ignorando la entrada y la salida de la salida a 'Nohup.afuera' 

Hemos cerrado la terminal y la hemos reabierto, luego ejecutamos el siguiente comando, que muestra que el comando todavía se está ejecutando.

$ PS aux | Grep Sleep Linuxco+ 1908 0.0 0.0 8084 524 ? S 13:05 0:00 Dormir 10000 

Usando el comando de pantalla

Hasta ahora, hemos cubierto los métodos de Linux predeterminados para ejecutar comandos en segundo plano. Sin embargo, también hay paquetes de software adicionales que se pueden usar. Quizás el más popular sería el comando de pantalla.

Puede ver el enlace antes mencionado para las instrucciones de instalación y el uso detallado, pero la esencia es así:

  1. Ejecutar el pantalla Comando para iniciar una nueva "pantalla". Opcionalmente, incluya el -S opción para darle un nombre.
    $ Screen -S MyCommand 
  2. En la nueva sesión de pantalla, ejecute el comando o script que desea poner en segundo plano.
    $/ruta/a/myscript.mierda 
  3. Prensa Ctrl + A en tu teclado, y luego D. Esto separará la pantalla, luego puede cerrar el terminal, el inicio de sesión de su sesión SSH, etc., y la pantalla persistirá. Para ver una lista de pantallas, use este comando.
    $ pantalla -ls hay una pantalla en: 2741.myCommand (08/08/2021 01:13:24 pm) (separado) 1 enchufe in/run/screen/s-linuxconfig. 


  4. Para volver a colocar a una pantalla, use el siguiente comando, sustituyendo el número a continuación con la ID de proceso propia.
    $ pantalla -r 2741 

Pensamientos de cierre

En esta guía, vimos varios métodos diferentes para ejecutar un comando en segundo plano en Linux. Esto incluyó utilidades de Linux predeterminados y el comando de pantalla. También vimos cómo gestionar el proceso de fondo moviendo trabajos en primer plano, vueltas a las pantallas y matar procesos de fondo.

Tutoriales de Linux relacionados:

  • Cosas para instalar en Ubuntu 20.04
  • Cosas que hacer después de instalar Ubuntu 20.04 fossa focal Linux
  • Una introducción a la automatización, herramientas y técnicas de Linux
  • Comandos de Linux: los 20 comandos más importantes que necesitas ..
  • Cómo manejar los eventos ACPI en Linux
  • Comandos básicos de Linux
  • Cosas que hacer después de instalar Ubuntu 22.04 Jellyfish de Jammy ..
  • Instale Arch Linux en VMware Workstation
  • Descarga de Linux
  • Cosas para instalar en Ubuntu 22.04