GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo ejecutar comandos de Linux en segundo plano

Por lo general, cuando ejecuta un comando en la terminal, debe esperar hasta que finalice el comando antes de poder ingresar otro. Esto se llama ejecutar el comando en primer plano o proceso en primer plano. Cuando un proceso se ejecuta en primer plano, ocupa su shell y puede interactuar con él utilizando los dispositivos de entrada.

¿Qué sucede si el comando tarda mucho en finalizar y desea ejecutar otros comandos mientras tanto? Tienes varias opciones a tu disposición. La opción más obvia y directa es iniciar una nueva sesión de shell y ejecutar el comando en ella. Otra opción es ejecutar el comando en segundo plano.

Un proceso en segundo plano es un proceso/comando que se inicia desde un terminal y se ejecuta en segundo plano, sin interacción por parte del usuario.

En este artículo, hablaremos sobre los procesos en segundo plano en Linux. Le mostraremos cómo iniciar un comando en segundo plano y cómo mantener el proceso en ejecución después de cerrar la sesión de shell.

Ejecutar un comando de Linux en segundo plano #

Para ejecutar un comando en segundo plano, agregue el símbolo de y comercial (& ) al final del comando:

command &

El ID del trabajo de shell (entre corchetes) y el ID del proceso se imprimirán en el terminal:

[1] 25177

Puede tener varios procesos ejecutándose en segundo plano al mismo tiempo.

El proceso en segundo plano continuará escribiendo mensajes en el terminal desde el que invocó el comando. Para suprimir el stdout y stderr los mensajes usan la siguiente sintaxis:

command > /dev/null 2>&1 & 

>/dev/null 2>&1 significa redirigir stdout a /dev/null y stderr a stdout .

Usa los jobs utilidad para mostrar el estado de todos los trabajos detenidos y en segundo plano en la sesión de shell actual:

jobs -l

El resultado incluye el número de trabajo, el ID del proceso, el estado del trabajo y el comando que inició el trabajo:

[1]+ 25177 Running                 ping google.com &

Para traer un proceso en segundo plano al primer plano, use el fg comando:

fg

Si tiene varios trabajos en segundo plano, incluya % y el ID del trabajo después del comando:

fg %1

Para terminar el proceso en segundo plano, use kill comando seguido del ID del proceso:

kill -9 25177

Mover un proceso de primer plano a segundo plano #

Para mover un proceso de primer plano en ejecución al segundo plano:

  1. Detenga el proceso escribiendo Ctrl+Z .
  2. Mueva el proceso detenido al fondo escribiendo bg .

Mantener los procesos en segundo plano ejecutándose después de que un shell salga #

Si su conexión se interrumpe o cierra la sesión de shell, los procesos en segundo plano finalizan. Hay varias formas de mantener el proceso en ejecución después de que finaliza la sesión de shell interactiva.

Una forma es eliminar el trabajo del control de trabajo del shell usando disown shell integrado:

disown

Si tiene más de un trabajo en segundo plano, incluya % y el ID del trabajo después del comando:

disown %1

Confirme que el trabajo se eliminó de la tabla de trabajos activos usando jobs -l dominio. Para enumerar todos los procesos en ejecución, incluidos los desautorizados, use ps aux comando.

Otra forma de mantener un proceso en ejecución después de la salida del shell es usar nohup .

El nohup El comando ejecuta otro programa especificado como su argumento e ignora todos los SIGHUP (colgar) señales. SIGHUP es una señal que se envía a un proceso cuando se cierra su terminal de control.

Para ejecutar un comando en segundo plano usando nohup comando, escriba:

nohup command &

La salida del comando se redirige a nohup.out archivo.

nohup: ignoring input and appending output to 'nohup.out'

Si cierra la sesión o cierra la terminal, el proceso no finaliza.

Alternativas #

Hay una serie de programas que le permiten tener múltiples sesiones interactivas al mismo tiempo.

Pantalla #

Screenor GNU Screen es un programa multiplexor de terminal que le permite iniciar una sesión de pantalla y abrir cualquier número de ventanas (terminales virtuales) dentro de esa sesión. Los procesos que se ejecutan en Pantalla continuarán ejecutándose cuando su ventana no esté visible, incluso si se desconecta.

Tmux #

Tmuxis una alternativa moderna a la pantalla GNU. Con Tmux, también puede crear una sesión y abrir varias ventanas dentro de esa sesión. Las sesiones de Tmux son persistentes, lo que significa que los programas que se ejecutan en Tmux continúan ejecutándose incluso si cierra la terminal.

Conclusión #

Para ejecutar un comando en segundo plano, incluya & al final del comando.

Cuando ejecuta un comando en segundo plano, no tiene que esperar hasta que finalice para poder ejecutar otro.

Si tiene alguna pregunta o comentario, no dude en dejar un comentario.


Linux
  1. Cómo usar el comando Su en Linux

  2. Ejecución de comandos de Linux en segundo plano y en primer plano

  3. Comando de eco de Linux

  4. ¿Cómo ejecutar un script en segundo plano (linux openwrt)?

  5. ¿Cómo puedo grabar comandos de Linux?

Cómo recuperar fácilmente comandos de Linux olvidados

Cómo corregir fácilmente los comandos Bash mal escritos en Linux

Cómo verificar el historial de comandos de Linux por fechas

Cómo ejecutar un comando periódicamente en Linux usando Watch

Cómo ejecutar múltiples comandos de Linux en un solo comando

Cómo ejecutar varios comandos de Linux a la vez en la terminal de Linux