Ejecutar un proceso en segundo plano en Bash

MD Aminul Islam 20 junio 2023
  1. Crear un proceso en segundo plano usando & en Bash
  2. Matar un proceso en segundo plano en Bash
  3. Mantenga el trabajo actual en ejecución usando disown en Bash
  4. Impedir que el proceso en segundo plano continúe imprimiendo mensajes en la terminal
  5. Mantener un comando ejecutándose en segundo plano usando nohup
  6. Convierta un proceso en primer plano en ejecución en un proceso en segundo plano en Bash
Ejecutar un proceso en segundo plano en Bash

Al ejecutar un comando en la terminal, debe esperar hasta que el comando finalice su ejecución. Esto se llama el proceso de primer plano.

Sin embargo, algunos programas avanzados deben ejecutarse en segundo plano. En un script de Bash, hay una manera fácil de hacer que su comando se ejecute en segundo plano.

Lo interesante de un proceso en segundo plano es que no es necesario esperar a que finalice la ejecución de un comando. Puede ejecutar otro comando en paralelo.

Pero no puede finalizar un proceso en segundo plano simplemente haciendo clic en el botón de cruz. Debe usar algunos comandos para finalizar un proceso en segundo plano.

En este artículo, discutiremos cómo podemos crear un comando que se ejecute en segundo plano. Además, discutiremos el tema usando los ejemplos y explicaciones necesarios para facilitar el tema.

Primero aprenderemos cómo crear un proceso en segundo plano y luego veremos cómo eliminar un proceso existente.

Crear un proceso en segundo plano usando & en Bash

Crear un proceso en segundo plano es muy fácil en el script Bash. Todo lo que necesita hacer es incluir el símbolo de y comercial & al final del comando.

La sintaxis general para ejecutar un comando en segundo plano es:

YOUR COMMAND &

El siguiente ejemplo ejecutará un Bash Script como un proceso en segundo plano. El código se verá como el siguiente:

./example.sh &

Después de ejecutar el código anterior, obtendrá este resultado:

[1] 20

Aquí, verá el número de proceso rodeado por el tercer paréntesis.

Si su proceso ha hecho su trabajo, se le notificará como a continuación:

[1]+  Done                    ./example.sh

Matar un proceso en segundo plano en Bash

Para eliminar un proceso en segundo plano, solo necesita realizar los siguientes pasos. Si olvidó la ID del proceso, puede encontrar su proceso en ejecución usando el siguiente comando.

jobs -l

Esto generará la lista de los procesos en ejecución.

[1]+ 25177 Running                 ./example.sh &

En la lista, puede encontrar el ID del proceso y usarlo para eliminar el proceso con el siguiente comando.

kill %1

La sintaxis general para matar un proceso es:

kill %ProcessID

Mantenga el trabajo actual en ejecución usando disown en Bash

Puede mantener el trabajo actual ejecutándose en segundo plano incluso si la terminal está cerrada. Para este propósito, utilizaremos un comando llamado repudiar.

Para mantener un trabajo actual ejecutándose en segundo plano constantemente, puede seguir el siguiente comando de ejemplo:

disown -h %3

Mantenemos vivo el proceso con id 3 incluso si la terminal está cerrada. Aquí, -h es una opción para mantener vivo el proceso.

La sintaxis general para este comando es:

disown -h %ProcessID

Impedir que el proceso en segundo plano continúe imprimiendo mensajes en la terminal

Para evitar que un proceso en segundo plano imprima mensajes en la ventana del terminal, puede seguir la siguiente sintaxis:

Your_Command 2>/dev/null &

Esto dejará de imprimir mensajes en la ventana del terminal.

Mantener un comando ejecutándose en segundo plano usando nohup

Si desea mantener un proceso ejecutándose en segundo plano, incluso si la terminal está cerrada, debe usar el comando nohup. Este comando ejecutará otros programas especificados como su argumento e ignora todas las señales de SIGHUP.

Cuando cierra la terminal, envía una señal SIGHUP para cerrar todos los procesos en ejecución bajo la terminal de control. Como este comando ignora el comando SIGHUP, el proceso ejecutado por el comando nohup siempre está vivo hasta que se elimina.

Tienes que incluir el & con este comando. Puedes seguir el siguiente ejemplo:

nohup ./MyScript.sh &

Este comando ejecutará el proceso en segundo plano y escribirá su salida en un archivo nohup.out.

Convierta un proceso en primer plano en ejecución en un proceso en segundo plano en Bash

Para transferir un proceso de primer plano al segundo plano, debe seguir los dos pasos a continuación:

  1. Primero, debe detener el proceso objetivo presionando Ctrl+Z.
  2. Mueva el proceso detenido al fondo usando el comando bg. Puede seguir la siguiente sintaxis:
bg %ProcessID

Todos los códigos utilizados en este artículo están escritos en Bash. Solo funcionará en el entorno Linux Shell.

MD Aminul Islam avatar MD Aminul Islam avatar

Aminul Is an Expert Technical Writer and Full-Stack Developer. He has hands-on working experience on numerous Developer Platforms and SAAS startups. He is highly skilled in numerous Programming languages and Frameworks. He can write professional technical articles like Reviews, Programming, Documentation, SOP, User manual, Whitepaper, etc.

LinkedIn

Artículo relacionado - Bash Background