GNU/Linux >> Tutoriels Linux >  >> Linux

Exécutez plusieurs commandes parallèles à la fois dans le même terminal

Ce script bash est pour N threads parallèles. Chaque argument est une commande.

trap tuera tous les sous-processus lorsque SIGINT sera intercepté.
wait $PID_LIST attend la fin de chaque processus. Lorsque tous les processus sont terminés, le programme se ferme.

#!/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";

Enregistrez ce script sous parallel_commands et le rendre exécutable.
Voici comment utiliser ce script :

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

Exemple :

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

Démarrez 4 veilles parallèles et attendez que "sommeil 4" se termine.


Basé sur le commentaire de @alessandro-pezzato. Exécutez plusieurs commandes en utilisant & entre les commandes.

Exemple :

$ sleep 3 & sleep 5 & sleep 2 &

Il exécutera les commandes en arrière-plan.


Utiliser GNU parallèle :

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

Pour tuer :

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

Linux
  1. Pourquoi plusieurs instances de Mate-terminal ont-elles le même pid ?

  2. Les commandes d'un script bash s'exécutent-elles en parallèle ou l'une après l'autre ?

  3. Chronométrer le temps d'exécution de plusieurs commandes

  4. Comment exécuter une commande en arrière-plan avec un délai ?

  5. Exécutez AVD et VirtualBox en même temps

Exemples de commandes Tmux pour gérer plusieurs sessions de terminal sous Linux

Comment exécuter plusieurs commandes Linux en une seule commande

Comment exécuter différentes versions de PHP sur le même serveur

Les 50 commandes Linux les plus utiles à exécuter dans le terminal

Comment exécuter plusieurs commandes Linux à la fois dans le terminal Linux

Comment installer plusieurs conteneurs Discourse sur le même serveur