GNU/Linux >> Linux Esercitazione >  >> Linux

Esegui più comandi paralleli contemporaneamente nello stesso terminale

Questo script bash è per N thread paralleli. Ogni argomento è un comando.

trap ucciderà tutti i sottoprocessi quando SIGINT viene rilevato.
wait $PID_LIST è in attesa del completamento di ogni processo. Quando tutti i processi sono stati completati, il programma si chiude.

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

Salva questo script come parallel_commands e renderlo eseguibile.
Ecco come usare questo script:

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

Esempio:

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

Avvia 4 sospensioni parallele e attendi fino al termine di "sleep 4".


Basato sul commento di @alessandro-pezzato. Esegui più comandi usando & tra i comandi.

Esempio:

$ sleep 3 & sleep 5 & sleep 2 &

Eseguirà i comandi in background.


Usa GNU Parallel:

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

Per uccidere:

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

Linux
  1. 8 comandi inquietanti che perseguitano il terminale

  2. Perché più istanze di Mate-terminal hanno lo stesso Pid?

  3. Come eseguo più comandi in background in bash in una singola riga?

  4. Come eseguire un comando in background con un ritardo?

  5. Esegui AVD e VirtualBox contemporaneamente

Esempi di comandi Tmux per gestire più sessioni di terminale in Linux

Come eseguire più comandi Linux in un unico comando

Come eseguire diverse versioni di PHP sullo stesso server

I 50 comandi Linux più utili da eseguire nel terminale

Come eseguire più comandi Linux contemporaneamente nel terminale Linux

Come installare più contenitori di discorsi sullo stesso server