Linux

Comment exécuter un script parallèle sous Unix ?

Pour tirer parti de la puissance des systèmes Unix, il est souvent nécessaire d’exécuter des scripts ou des commandes en parallèle. Cela permet d’optimiser les performances et de réduire le temps d’attente, surtout lorsque vous avez plusieurs tâches à accomplir. Voici un aperçu détaillé des différentes méthodes pour réaliser cela.

Modes d’exécution de commandes en parallèle

L’exécution de plusieurs commandes simultanément sous Unix peut se faire de différentes manières. L’une des méthodes les plus simples consiste à utiliser le symbole « & » pour envoyer des processus en arrière-plan. Ainsi, une commande suivie de « & » démarre immédiatement et permet à l’utilisateur de continuer à travailler dans le shell sans être bloqué par la tâche en cours.

Comment exécuter un script parallèle sous Unix ?

Pour exécuter plusieurs scripts ou commandes en parallèle, vous pouvez créer un simple script shell. Voici comment procéder :

#!/bin/bash
for cmd in "$@"; do
  echo "Démarrage du processus : $cmd"
  $cmd &   # Lancer la commande en arrière-plan
  pid=$!   # Capturer l'ID du processus
  PID_LIST+=($pid)  # Ajouter à la liste des processus
done

trap "kill ${PID_LIST[@]}" SIGINT  # Tuer les processus en cas d'interruption
echo "Tous les processus ont été lancés."
wait ${PID_LIST[@]}  # Attendre la fin de tous les processus
echo "Tous les processus sont terminés."

Enregistrez ce code dans un fichier, par exemple `parallel_commands.sh`, et rendez-le exécutable avec la commande `chmod +x parallel_commands.sh`. Vous pourrez alors exécuter vos commandes simplement en fournissant leurs noms comme arguments du script.

A lire :  Comment sauvegarder un script sous Linux ?

Exécution de plusieurs scripts en parallèle

Pour exécuter différents scripts en parallèle, il est essentiel de lancer chaque script dans un processus distinct. Cela peut être réalisé en utilisant le même symbole « & ». Par exemple :

./script1.sh &
./script2.sh &
wait  # Attend que tous les processus en arrière-plan se terminent

En utilisant cette méthode, chaque script démarre indépendamment et continue d’exécuter en parallèle sans attente de la part de l’utilisateur.

Utiliser ‘xargs’ pour exécuter des commandes parallèles

Une autre manière efficace d’exécuter des commandes en parallèle consiste à utiliser `xargs`. En utilisant `xargs -P`, vous pouvez spécifier le nombre de processus parallèles à lancer. Par exemple :

echo "file1.txt file2.txt file3.txt" | xargs -n 1 -P 3 ./process_file.sh

Dans cet exemple, `process_file.sh` sera exécuté pour chaque fichier avec jusqu’à 3 instances en parallèle.

Attendre la fin des processus

Après avoir lancé plusieurs processus en arrière-plan, il est souvent nécessaire d’attendre leur achèvement. La commande `wait` est utilisée à cette fin. Si vous omettez d’utiliser `wait`, le shell continuera à traiter les commandes suivantes sans attendre la fin des tâches lancées en arrière-plan, ce qui pourrait être problématique si ces tâches dépendent des résultats des scripts précédents.

FAQ

  • Qu’est-ce que le symbole ‘&’ dans un script shell ?
    Cela indique que la commande doit être exécutée en arrière-plan, permettant au shell de reprendre immédiatement le contrôle.
  • Comment puis-je tuer tous les processus en arrière-plan ?
    Vous pouvez utiliser la commande `kill` suivie de l’ID des processus ou utiliser `trap` pour gérer cela en cas d’interruption.
  • Puis-je exécuter des scripts Python en parallèle ?
    Oui, vous pouvez exécuter plusieurs instances de scripts Python à la fois en utilisant les méthodes mentionnées ci-dessus.
A lire :  Comment changer de groupe sous Linux ?