GNU/Linux >> Belajar Linux >  >> Linux

Jalankan beberapa perintah paralel sekaligus di terminal yang sama

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

Linux
  1. Mengapa Beberapa Instance Mate-terminal Memiliki Pid yang Sama?

  2. 3 trik untuk mendapatkan beberapa perintah output di baris yang sama

  3. Apakah perintah dalam skrip bash berjalan secara paralel atau satu demi satu?

  1. 8 perintah menyeramkan yang menghantui terminal

  2. Cara Menjalankan Perintah Tunggal Pada Beberapa Sistem Jarak Jauh Sekaligus

  3. Atur waktu waktu eksekusi beberapa perintah

  1. 10 Situs Web Terbaik untuk Menjalankan Linux di Peramban Web

  2. Bagaimana cara menjalankan beberapa perintah latar belakang di bash dalam satu baris?

  3. Bagaimana cara menjalankan perintah di latar belakang dengan penundaan?