Cómo ejecutar comandos en paralelo en Linux: una guía para principiantes

Cuando ejecutas comandos en Linux, ya sea uno a uno en la terminal o desde un script de bash, esos comandos se ejecutan en secuencia. El primer comando se ejecuta, seguido del segundo, y luego del tercero. Si bien el tiempo entre los comandos es tan minúsculo que el ojo humano no lo notaría, en algunas situaciones podría no ser el enfoque más eficiente para ejecutar comandos. ¿Qué hacer si necesitas que varios comandos se ejecuten exactamente al mismo tiempo, por ejemplo, en tus servidores Linux de centro de datos?

La solución es usar GNU Parallel.

Índice de Contenido
  1. ¿Qué es GNU Parallel?
  2. Instalación
  3. Uso
  4. Uso con comandos
  5. Rascando la superficie

¿Qué es GNU Parallel?

GNU Parallel es una herramienta de línea de comandos que permite la ejecución de trabajos en paralelo utilizando una o más computadoras. Un trabajo puede ser un solo comando o una entrada de un archivo que contiene una lista de comandos, una lista de archivos, una lista de hosts, una lista de usuarios, una lista de URL o una lista de tablas. GNU Parallel también puede tomar información de un comando en forma de tubería.

A continuación, te mostraré cómo instalar GNU Parallel y los conceptos básicos de su uso.

Instalación

En esta demostración, utilizaré un servidor Ubuntu 16.04. Sin embargo, GNU Parallel puede ser instalado en casi cualquier distribución de Linux. Si estás utilizando una distribución distinta de Ubuntu, ajusta el comando de instalación según tu plataforma.

Dado que GNU Parallel se encuentra en el repositorio estándar, la instalación es simple. Abre una ventana de terminal y ejecuta el siguiente comando:

Los diferentes tipos de buses en los dispositivos electrónicos

sudo apt install parallel

Una vez que la instalación esté completa, debes silenciar el banner de citas. Esto se hace para asegurarse de que cualquier persona que use GNU Parallel y lo cite públicamente mencione a los desarrolladores.

Para silenciar el banner de citas, ejecuta el siguiente comando: parallel –bibtex. A continuación, se mostrará la información de la cita y se te pedirá que escribas "will cite" (Figura A).

Figura A

Ahora estás listo para usar GNU Parallel.

Uso

La forma más sencilla de demostrar GNU Parallel es mediante el comando echo. Supongamos que queremos usar el comando echo para imprimir "uno dos tres cuatro". El comando sería:

Cómo entrar al programa de configuración del BIOS en tu computadora

echo "uno dos tres cuatro"

El resultado será similar al de la Figura B.

Figura B

Usando parallel, el mismo comando sería:

parallel echo ::: uno dos tres cuatro

El resultado para el comando anterior se verá como en la Figura C.

Entendiendo los permisos de archivos y directorios en UNIX

Figura C

También podemos proporcionar dos conjuntos de datos de entrada de la siguiente manera:

parallel echo ::: 1 2 3 4 ::: A B C D

El resultado para el comando anterior se verá como en la Figura D.

Figura D

Como puedes ver, delimitamos el comando de las variables de entrada con los caracteres ":::". También puedes usar archivos como entrada para el comando. Permíteme demostrarte cómo hacerlo. Crea dos archivos: el primero se llamará "abc-file" y contendrá:

Cómo recuperar una contraseña de BIOS perdida: dos métodos efectivos

A
B
C
D
E
F
G
H
I
K

El segundo archivo se llamará "123-file" y contendrá:

1
2
3
4
5
6
7
8
9
10

Ahora utilizaremos esos dos archivos para generar la salida. El comando sería:

parallel -a abc-file -a 123-file echo

El resultado se verá como en la Figura E.

Cómo funciona y cómo probar una fuente de alimentación para PC

Figura E

Si los archivos de entrada no tienen la misma longitud, ¿qué hacemos? GNU Parallel envolverá la salida del archivo más corto para que coincida con el más largo. La salida será similar a la mostrada en la Figura E (arriba). Sin embargo, si deseamos tener un poco más de control sobre esa salida, podemos hacer uso del argumento -xapply. Supongamos que tenemos el archivo "10-file" con 10 líneas de entrada (12345678910, un número por línea) y el archivo "5-file" con cinco líneas de entrada (ABCDE, una letra por línea). Ejecutamos el siguiente comando:

parallel --xapply -a 10-file -a 5-file echo

Verás que GNU Parallel solo imprimirá el contenido del archivo "10-file" una vez, pero repetirá el contenido del archivo "5-file" hasta que coincida con la longitud del archivo "10-file" ( Figura F).

Figura F

Uso con comandos

Hasta ahora solo hemos usado el comando echo para imprimir caracteres. Veamos un ejemplo que realmente utiliza comandos. Supongamos que tenemos un directorio llamado TEST. Dentro de esa carpeta hay un archivo llamado "test" y un subdirectorio llamado "1" que contiene los archivos "test" y "test2". Digamos que queremos cambiar el nombre de "test" a "test1", cambiar el nombre de "test1" a "test2", crear un archivo tar de la carpeta "1" y luego cambiar el nombre del directorio tar. Podemos crear un archivo con el siguiente contenido:

Cómo diagnosticar y reemplazar una fuente de alimentación defectuosa en tu PC

mv test test1
mv test1 test2
tar cfz 1.tar.gz 1
mv 1.tar.gz 2.tar.gz

Guarda y cierra ese archivo, dándole el nombre "jobs". Ahora toma la entrada de "jobs" con el comando parallel, de la siguiente manera:

parallel --jobs 4 < jobs

La opción --jobs indica a GNU Parallel cuántos comandos se pueden ejecutar al mismo tiempo. En nuestro caso, tenemos 4 comandos. Si hubiera más comandos que trabajos permitidos, los comandos restantes se colocarían en una cola. En general, es seguro permitir más trabajos de los que tienes comandos. Por lo tanto, ejecutar el comando:

parallel --jobs 6 < jobs

estaría bien.

Cómo reemplazar un fusible de la fuente de alimentación y ahorrar dinero

No habrá salida desde el comando. Si cambias al directorio TEST, verás que todo ha cambiado según el archivo de comandos de entrada.

Rascando la superficie

Solo hemos rascado la superficie de GNU Parallel. Te recomiendo que leas el tutorial oficial de GNU Parallel y veas estos video tutoriales en Youtube, para que puedas entender las complejidades de esta herramienta (que son muchas). Esto te ayudará a comenzar a utilizar comandos de manera más eficiente en tus servidores Linux de centro de datos.

En Newsmatic nos especializamos en tecnología de vanguardia, contamos con los artículos mas novedosos sobre Centros de Datos, allí encontraras muchos artículos similares a Cómo ejecutar comandos en paralelo en Linux: una guía para principiantes , tenemos lo ultimo en tecnología 2023.

Artículos Relacionados

Subir

Utilizamos cookies para mejorar su experiencia de navegación, mostrarle anuncios o contenidos personalizados y analizar nuestro tráfico. Al hacer clic en “Aceptar todo” usted da su consentimiento a nuestro uso de las cookies.