2012-01-24 9 views
20

Aynı anda iki komut çalıştırdığım bir bash komut dosyası yazmak istiyorum, sonra ikisi de tamamlandığında devam et. İşteBir bash betiği eşzamanlı komutları çalıştırabilir ve sonra tamamlanmasını bekleyebilir mi?

çalışmıyor şey, ama ben yapmaya çalışıyorum istediğimi anlatmak için buraya koyacağım:

#!/bin/bash 
./job1 & 
./job2 
./dostuffwithresults 

aynı anda her iki job1 ve job2 çalışacak komut, ancak Devam etmek için sadece iş2'nin bitmesini bekleyecektir. Eğer iş 1 daha uzun sürerse, sonuçlar son komut için hazır olmayabilir. Böyle

cevap

33
j1 & 
j2 & 
j3 & 
wait $(jobs -p) 
dostuffwithresults 
+6

+1 çalışmalıdır, ancak varsayılan olduğu gibi beklemek argüman bu durumda gerekli değildir. –

+0

@JohanLundberg, aslında, hiç bir fikrim yoktu ;-) –

+1

Beklenecek argümanı eklemenin nedeni, işlerden durum toplanmasını sağlamaktır. Ne yazık ki, yalnızca son işlemin durumunu listede döndürür, bu nedenle tüm durumları kontrol etmek/toplamak için yinelemek zorunda kalırsınız. – libjack

1

şey

#!/bin/bash 
    while [ `pgrep job*` ] 
    do 
    echo 'waiting' 
    done 

    ./dostuffwithresults 
İlgili konular