1 EYLÜL 2008, PAZARTESİ
Parallelize Bash süreçlerin azami sayısı ile Script
Bash bir döngü var diyelim:
for foo in `some-command`
do
do-something $foo
done
do-something
cpu bağlıdır ve güzel parlak 4 çekirdekli işlemci var. 4 do-something
kadar çalıştırmak mümkün'anda s. olmak istiyorum
Naif bir yaklaşım gibi görünüyor:
for foo in `some-command`
do
do-something $foo &
done
Bu çalışacaktırtümdo-something
Bir kez, ama birkaç olumsuzlukları, o sahne-bir şeyler yap da bazı önemli I/O olabilir esas vardırtümbir kez de yavaşlatabilir biraz. Diğer sorun bu kod bloğu hemen, bu yüzden hiçbir yolu do-something
Tüm s bittiğinde diğer iş için döndürür.
Nasıl her zaman X do-something
s aynı anda çalışan var bu yüzden bu döngü yazmak ister misin?
CEVAP
19 Mayıs 2009, Salı
Xargs yapmak istediğinize bağlı olarak da (burada: pdf2ps ile dönüştürme belgeler) yardımcı olabilir:
cpus=$( ls -d /sys/devices/system/cpu/cpu[[:digit:]]* | wc -w )
find . -name \*.pdf | xargs --max-args=1 --max-procs=$cpus pdf2ps
Gelen dokümanlar:
--max-procs=max-procs
-P max-procs
Run up to max-procs processes at a time; the default is 1.
If max-procs is 0, xargs will run as many processes as possible at a
time. Use the -n option with -P; otherwise chances are that only one
exec will be done.
Bunu Paylaş:
bağımsız denetleme sayısı script bash...
bash script: yolundan sadece dosya adı...
Boşlukları değiştirmek için Bash scrip...
Bash kabuk komutunda tek tırnak içinde...
Kullanılan bash script SSH komutu için...