Aprenda cómo ejecutar subshells correctamente utilizando scripts de Bash

Cómo indicar a los subshells que se ejecuten en paralelo en segundo plano Un shell es una interfaz básica para ingresar comandos en un sistema Linux. Con él, puede ingresar un comando directamente o especificar un archivo (script) que contenga una secuencia de comandos para ejecutar.

Cómo indicar a los subshells que se ejecuten en paralelo en segundo plano

Un shell es una interfaz básica para ingresar comandos en un sistema Linux. Con él, puede ingresar un comando directamente o especificar un archivo (script) que contenga una secuencia de comandos para ejecutar. Los shells se organizan en una jerarquía, y cualquier shell puede crear un nuevo shell. El nuevo shell se considera un proceso hijo (un subshell) del shell padre que lo crea.

Por defecto, una subshell depende de su padre en el sentido de que si el proceso padre termina, la subshell también termina. Cualquier salida se pasa del subshell al shell padre.

Cómo crear una subshell

En un script de shell Bash, crea una subshell utilizando la notación de paréntesis:

En el ejemplo, el ciclo while está encerrado entre paréntesis, lo que hace que se ejecute en un subshell del shell en el que se ejecuta el archivo de script.

Ejecutar una subshell en segundo plano

A menos que especifique que la subshell se ejecutará en segundo plano, la shell principal espera a que finalice la subshell antes de continuar con el resto del script. Sin embargo, si desea ejecutar subcapas en paralelo, las ejecuta en segundo plano, lo que se logra con el carácter y comercial que sigue a la expresión de la subcapa, como se muestra aquí:

Ejecución de múltiples subshells en paralelo

Si crea múltiples subcapas como procesos en segundo plano, puede ejecutar tareas en paralelo. Normalmente, el sistema operativo utiliza diferentes procesadores o núcleos para cada proceso y subproceso, suponiendo que haya al menos tantos procesadores o núcleos como procesos. De lo contrario, las tareas se asignan a los mismos procesadores o núcleos. En ese caso, el procesador o núcleo cambia continuamente entre las tareas asignadas hasta que se completen las tareas. El siguiente ejemplo tiene dos subprocesos. El primero cuenta de 1 a 99, y el segundo de 1000 a 1099.

Use la instrucción wait para indicarle al proceso padre que espere a que finalicen los subprocesos antes de continuar con el resto del script:

Usos para subcapas

Las subcapas son útiles cuando los comandos deben ejecutarse en un entorno o directorio particular. Si cada comando se ejecuta en una subshell diferente, no hay riesgo de que la configuración de las variables se mezcle. Al finalizar, no es necesario restaurar la configuración y el directorio actual, ya que el entorno del proceso principal no se ve afectado por ninguno de sus subprocesos.

Las subcapas se pueden usar en definiciones de funciones para que se puedan ejecutar varias veces con diferentes parámetros.

Rate article
labsfabs.com
Add a comment