GNU/Linux >> Belajar Linux >  >> Linux

Menjalankan skrip shell secara paralel

Ada seluruh daftar program yang dapat menjalankan pekerjaan secara paralel dari sebuah shell, yang bahkan menyertakan perbandingan di antara mereka, dalam dokumentasi untuk paralel GNU. Ada banyak, banyak solusi di luar sana. Kabar baik lainnya adalah mereka mungkin cukup efisien dalam menjadwalkan tugas sehingga semua inti/prosesor tetap sibuk setiap saat.


Untuk membuat semuanya berjalan secara paralel, Anda menggunakan '&' di akhir perintah shell untuk menjalankannya di latar belakang, lalu wait akan secara default (yaitu tanpa argumen) menunggu sampai semua proses latar belakang selesai. Jadi, mungkin mulai 10 secara paralel, lalu tunggu, lalu lakukan sepuluh lagi. Anda dapat melakukannya dengan mudah menggunakan dua loop bersarang.


Cara lain yang sangat berguna untuk melakukan ini adalah dengan gnu paralel, yang layak dipasang jika Anda belum memilikinya; ini sangat berharga jika tugas tidak selalu memakan waktu yang sama.

seq 1000 | parallel -j 8 --workdir $PWD ./myrun {}

akan meluncurkan ./myrun 1 , ./myrun 2 , dll, memastikan 8 pekerjaan sekaligus berjalan. Itu juga dapat mengambil daftar node jika Anda ingin menjalankan beberapa node sekaligus, misalnya dalam pekerjaan PBS; instruksi kami kepada pengguna kami tentang cara melakukannya di sistem kami ada di sini.

Diperbarui untuk menambahkan: Anda ingin memastikan bahwa Anda menggunakan gnu-paralel, bukan utilitas yang lebih terbatas dengan nama yang sama yang disertakan dalam paket moreutils (sejarah yang berbeda dari keduanya dijelaskan di sini.)


Lihat subkulit bash, ini dapat digunakan untuk menjalankan bagian skrip secara paralel.

Saya belum menguji ini, tapi ini bisa menjadi permulaan:

#!/bin/bash
for i in $(seq 1 1000)
do
   ( Generating random numbers here , sorting  and outputting to file$i.txt ) &
   if (( $i % 10 == 0 )); then wait; fi # Limit to 10 concurrent subshells.
done
wait

Linux
  1. Waktu Habis Dalam Skrip Shell?

  2. Shell mana yang saya jalankan?

  3. Cara Membuat Script Shell Selalu Jalankan Sebagai Root?

  1. Dari Mana Skrip Shell Dijalankan?

  2. Bagaimana Cara Menjalankan Script Shell Di Latar Belakang?

  3. Bagaimana Anda menjalankan skrip saat login di * nix?

  1. Edit skrip shell saat sedang berjalan

  2. Cara menjalankan skrip shell saat startup

  3. Jalankan skrip shell di terminal baru dari terminal saat ini