Skrip bash ini untuk N utas paralel. Setiap argumen adalah perintah.
trap
akan mematikan semua subproses saat SIGINT ditangkap.
wait $PID_LIST
sedang menunggu setiap proses selesai. Ketika semua proses telah selesai, program keluar.
#!/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";
Simpan skrip ini sebagai parallel_commands
dan membuatnya dapat dieksekusi.
Ini adalah cara menggunakan skrip ini:
parallel_commands "cmd arg0 arg1 arg2" "other_cmd arg0 arg2 arg3"
Contoh:
parallel_commands "sleep 1" "sleep 2" "sleep 3" "sleep 4"
Mulai 4 tidur paralel dan tunggu hingga "tidur 4" selesai.
Berdasarkan komentar @alessandro-pezzato. Jalankan banyak perintah dengan menggunakan &
antara perintah.
Contoh:
$ sleep 3 & sleep 5 & sleep 2 &
Itu akan menjalankan perintah di latar belakang.
Gunakan GNU Paralel:
(echo command1; echo command2) | parallel
parallel ::: command1 command2
Untuk membunuh:
parallel ::: command1 command2 &
PID=$!
kill -TERM $PID
kill -TERM $PID