Jadi saya memiliki loop sementara:
cat live_hosts | while read host; do \
sortstuff.sh -a "$host" > sortedstuff-"$host"; done
Tapi ini bisa memakan waktu lama. Bagaimana saya menggunakan GNU Parallel untuk loop sementara ini?
shell-script
files
gnu-parallel
Proletariat
sumber
sumber
tee
denganparallel
saat meletakkan output kesortedstuff
? Jadi saya bisa melihat outputnya.>
dengan| tee
misalnya perintah pertama menjadiparallel "sortstuff.sh -a {} | tee sortedstuff-{}" <live_hosts
Sebagai sekolah tua "lakukan satu hal dan lakukan dengan baik" Unix guy, saya akan memasukkan barang substitusi string ke dalam skrip pembungkus:
Jika Anda memanggilnya
wrapper.sh
,parallel
perintah untuk memanggilnya adalah:Perhatikan bahwa Anda tidak perlu
cat
untuk hal semacam ini, yang menyimpan permintaan program eksternal.sumber
Anda tidak perlu
parallel
, karena tubuh loop tidak tergantung pada iterasi sebelumnya. Mulai saja proses latar belakang baru untuk setiap host.parallel
memang membuatnya lebih mudah untuk mengelola aspek-aspek tertentu; Anda dapat membatasi jumlah pekerjaan yang berjalan secara paralel dengan lebih mudah.sumber
wc -l live_hosts
lebih dari jumlah poros disk atau inti CPU - tergantung pada apakah tugasnya I / O atau terikat CPU - Anda akan memakan banyak keuntungan yang Anda dapatkan dari paralelisme dengan solusi seperti itu. Kemampuanparallel
untuk membatasi jumlah pekerjaan tidak hanya bagus, itu hampir esensial, jika kecepatan pemrosesan adalah tujuan Anda.