GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Führen Sie parallel mehrere Befehle gleichzeitig im selben Terminal aus

Dieses Bash-Skript ist für N parallele Threads. Jedes Argument ist ein Befehl.

trap wird alle Unterprozesse beenden, wenn SIGINT abgefangen wird.
wait $PID_LIST wartet auf den Abschluss jedes Prozesses. Wenn alle Prozesse abgeschlossen sind, wird das Programm beendet.

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

Speichern Sie dieses Skript unter parallel_commands und ausführbar machen.
So verwenden Sie dieses Skript:

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

Beispiel:

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

Starten Sie 4 parallelen Schlaf und warten Sie, bis "Schlaf 4" beendet ist.


Basierend auf dem Kommentar von @alessandro-pezzato. Führen Sie mehrere Befehle aus, indem Sie & verwenden zwischen den Befehlen.

Beispiel:

$ sleep 3 & sleep 5 & sleep 2 &

Es führt die Befehle im Hintergrund aus.


Verwenden Sie GNU Parallel:

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

Töten:

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

Linux
  1. Die 10 besten Websites zum Ausführen von Linux in einem Webbrowser

  2. Wie führe ich mehrere Hintergrundbefehle in Bash in einer einzigen Zeile aus?

  3. Werden Befehle in einem Bash-Skript parallel oder nacheinander ausgeführt?

  4. Timen Sie die Ausführungszeit mehrerer Befehle

  5. Wie kann ich einen Befehl verzögert im Hintergrund ausführen?

Beispiele für Tmux-Befehle zum Verwalten mehrerer Terminalsitzungen unter Linux

So führen Sie mehrere Linux-Befehle in einem einzigen Befehl aus

So führen Sie verschiedene PHP-Versionen auf demselben Server aus

Die 50 nützlichsten Linux-Befehle zum Ausführen im Terminal

So führen Sie mehrere Linux-Befehle gleichzeitig im Linux-Terminal aus

So installieren Sie mehrere Discourse-Container auf demselben Server