LINUX

Machma: permite ejecutar varios comandos en paralelo en Linux

machma ejecutar comando paraleloPara aprovechar al máximo la potencia informática, los trabajos se pueden ejecutar en paralelo. Por ejemplo, el cambio de tamaño de imágenes secuencialmente lleva mucho tiempo. Por otro lado, el cambio de tamaño de varias imágenes en paralelo hace un mejor uso de la CPU de múltiples núcleos y, por lo tanto, es mucho más rápido. Machma facilita la ejecución de tareas en paralelo y proporciona retroalimentación en vivo. En el caso de errores o líneas impresas por el programa, los mensajes se etiquetan con el nombre del trabajo.

En un artículo anterior hemos visto cómo podemos ejecutar comandos en paralelo en un host diferente usando la herramienta pdsh. Este artículo cubre la instalación de machma, una herramienta para una fácil ejecución paralela de comandos con retroalimentación en vivo en Ubuntu 16.10

Instalación

Machma necesita Go Lang, instálelo usando los siguientes comandos en la terminal

 # wget https://storage.googleapis.com/golang/go1.7.1.linux-amd64.tar.gz
 # tar -zxvf  go1.7.1.linux-amd64.tar.gz -C /usr/local/
 # mkdir work
 # vi .profile
 export GOPATH=~/work
 export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin
 # go version
 go version go1.7.1 linux/amd64

Luego instálelo usando go get, y También necesitas git para obtener machma de github.

 # apt-get install git
 # go get github.com/fd0/machma
 # machma --help

Uso de Machma

machma por defecto lee valores separados por saltos de línea y reemplaza todos los argumentos de la línea de comandos establecidos en {} con el nombre del archivo. El número de trabajos se establece en el número de núcleos de la CPU en la que se está ejecutando.

Suponga que desea hacer ping a una gran cantidad de hosts. Escriba toda la IP / dominio que desea hacer ping en un archivo de texto y pase la salida filtrada a machma. los -p opción especifica el número de programa. si tiene 4 núcleos, especifique el valor de -p opción a 4.

 # cat /tmp/ip_address.txt | machma -p 2 -- ping -c 2 -q {}

Un ejemplo un poco más avanzado es el siguiente, que hace lo mismo pero reduce la salida impresa por ping.

 # cat /tmp/ip_address | machma -- sh -c 'ping -c 2 -q $0 > /dev/null && echo alive' {}

Cambie el tamaño de todas las imágenes para el directorio actual de forma recursiva a 1200×1200 píxeles como máximo. El comando mogrify es una parte de imagemagic que necesitas de antemano para ejecutar el siguiente comando. Puedes instalar imagemagic usando apt-get install imagemagic.

 # find . -iname '*.jpg' | machma --  mogrify -resize 1200x1200 -filter Lanczos {}

Puede limitar el tiempo que se permite que mogrify se ejecute por imagen usando --timeout Cuando se alcanza el tiempo de espera, el programa se cancela.

# find . -iname '*.jpg' | machma --timeout 5s --  mogrify -resize 1200x1200 -filter Lanczos {}

Si el nombre del archivo tiene espacios, use --null opción que indica a machma que lea elementos separados por bytes nulos de stdin.

# find . -iname '*.jpg' -print0 | machma --null --  mogrify -resize 1200x1200 -filter Lanczos {}

Conclusión

Machma es una buena herramienta para realizar operaciones por lotes del mismo comando. Aprovecha las ventajas de la potencia informática para ejecutar tareas en paralelo. En este artículo, hemos visto cómo usarlo haciendo ping a un grupo de host remoto y también para cambiar el tamaño de las imágenes al mismo tiempo. Puede usarlo en otros escenarios donde necesite ejecutar un comando repetidamente.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar