GNU/Linux >> Tutoriales Linux >  >> Linux

Ejecute múltiples comandos paralelos a la vez en la misma terminal

Este script bash es para N subprocesos paralelos. Cada argumento es un comando.

trap eliminará todos los subprocesos cuando se capture SIGINT.
wait $PID_LIST está esperando que se complete cada proceso. Cuando todos los procesos se han completado, el programa sale.

#!/bin/bash

for cmd in "[email protected]"; do {
  echo "Process \"$cmd\" started";
  $cmd & pid=$!
  PID_LIST+=" $pid";
} done

trap "kill $PID_LIST" SIGINT

echo "Parallel processes have started";

wait $PID_LIST

echo
echo "All processes have completed";

Guarde este script como parallel_commands y hacerlo ejecutable.
Así es como se usa este script:

parallel_commands "cmd arg0 arg1 arg2" "other_cmd arg0 arg2 arg3"

Ejemplo:

parallel_commands "sleep 1" "sleep 2" "sleep 3" "sleep 4"

Inicie 4 sueño paralelo y espere hasta que termine "dormir 4".


Basado en el comentario de @alessandro-pezzato. Ejecute múltiples comandos usando & entre los comandos.

Ejemplo:

$ sleep 3 & sleep 5 & sleep 2 &

Ejecutará los comandos en segundo plano.


Usar GNU paralelo:

(echo command1; echo command2) | parallel
parallel ::: command1 command2

Matar:

parallel ::: command1 command2 &
PID=$!
kill -TERM $PID
kill -TERM $PID

Linux
  1. Cómo ejecutar un solo comando en múltiples sistemas remotos a la vez

  2. ¿Por qué varias instancias de terminal de pareja tienen el mismo Pid?

  3. ¿Cómo ejecuto múltiples comandos en segundo plano en bash en una sola línea?

  4. ¿Cómo ejecutar un comando en segundo plano con un retraso?

  5. Ejecute AVD y VirtualBox al mismo tiempo

Ejemplos de comandos Tmux para administrar múltiples sesiones de terminal en Linux

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

Cómo ejecutar diferentes versiones de PHP en el mismo servidor

Los 50 comandos de Linux más útiles para ejecutar en la terminal

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

Cómo instalar varios contenedores de discursos en el mismo servidor