Cara Menjalankan Perintah Linux secara Paralel

Ada beberapa kasus kalian perlu menjalankan perintah Linux secara paralel demi efisiensi, misalnya untuk mengunduh banyak file sekaligus, tentunya akan sangat memakan waktu jika program tersebut tidak dijalankan secara paralel.

Agar perintah dapat dijalankan secara paralel ada tiga metode, antara lain adalah dengan operator Bash &, xargs, dan GNU Parallel.

Operator ”&”

Pada dasarnya fungsi dari & dalam Bash, ialah untuk menjalankan perintah di latar belakang.

Dengan demikian, tentunya kalian dapat memanfaatkan & untuk menjalankan banyak perintah sekaligus seperti pada contoh berikut:

$ curl https://example.com/1.jpg &
$ curl https://example.com/2.jpg &
$ curl https://example.com/3.jpg &

Untuk melihat daftar perintah yang sedang berjalan di latar belakang, gunakan perintah berikut:

$ jobs

Gunakan wait untuk menunggu perintah yang sedang dijalankan secara paralel sebelum mengeksekusi perintah selanjutnya.

Misalnya, perintah echo berikut akan dijalankan apabila seluruh perintah yang dijalankan secara paralel selesai terlebih dahulu.

$ curl https://example.com/1.jpg &
$ curl https://example.com/2.jpg &
$ curl https://example.com/3.jpg &
$ wait
$ echo "Sukses mengunduh seluruh gambar."

Xargs

Cara ini lebih powerfull, karena bisa membatasi jumlah perintah yang dijalankan secara paralel.

Misalnya pada perintah berfungsi untuk mengunduh banyak file dengan curl dan jumlah paralelnya dibatasi maksimum 3 paralel dengan opsi -P.

$ echo 'https://example.com/1.jpg https://example.com/2.jpg' | xargs -n 1 -P 3 curl -O

Bentuk lain dari perintah xargs di atas apabila daftar URL yang akan diunduh dengan curl berasal dari list.txt, maka perintahnya menjadi seperti berikut:

$ cat list.txt
https://example.com/1.jpg
https://example.com/2.jpg
https://example.com/3.jpg
$ cat list.txt | xargs -n 1 -P 3 curl -O

Atau

$ xargs -a list.txt -n 1 -P 3 curl -O

Jika kalian masih bingung mengenai xargs ini, pada dasarnya perintah xargs ini berfungsi untuk menjadikan stdin sebagai argumen kepada perintah lain.

Misalnya, perintah berikut ini untuk mencetak teks “Hello World” dengan xargs.

$ echo "World" | xargs echo "Hello"

GNU Parallel

Paket aplikasi ini biasanya belum otomatis terinstal di sistem operasi Linux, sehingga kalian harus menginstalnya terlebih agar dapat menggunakannya.

Perintah untuk menginstal GNU Parallel di Debian/Ubuntu:

$ sudo apt install parallel

Sedangkan perintah berikut untuk menginstal GNU Parallel di distro Arch Linux:

$ sudo pacman -S parallel

Cara penggunaan parallel mirip seperti xargs.

Misalnya, perintah berikut ini untuk mengunduh dari daftar URL dengan curl dan dibatasi maksimum 3 paralel dengan opsi --jobs.

$ cat list.txt | parallel --jobs 3 curl -O