Nasıl sadece benekli burada sorunu da komut çalıştırmak olduğunu programlar işlerini bitirmek beklemek zorunda olmasıdır.
Betiğinizde programı arka planda çalıştırırsanız , daha fazlasını deneyebilirsiniz.
Genelde sync
çıkmadan önce yapılacak bir çağrı, dosya sistemi arabelleklerini temizlemeye izin verir ve biraz yardımcı olabilir.
Komut dosyasında arka planda ( &
) bazı programları başlatırsanız, komut dosyasından çıkmadan önce bitmelerini bekleyebilirsiniz . Nasıl işleyebileceği hakkında fikir sahibi olmak için aşağıya bakabilirsiniz.
#!/bin/bash
program_1 &
PID_PROGRAM_1=${!}
program_2 &
wait ${!}
daemon_1 &
program_3 &
PID_PROGRAM_3=${!}
sync
wait $PID_PROGRAM_1
wait $PID_PROGRAM_3
Yana wait
işlerle yanı sıra ile işler PID
sayılar tembel çözüm senaryonun sonunda koymak olmalıdır
for job in `jobs -p`
do
wait $job
done
Arka planda başka bir şey çalıştıran bir şey çalıştırırsanız durum daha zordur, çünkü tüm alt sürecin sonunu aramanız ve beklemeniz gerekir (eğer durum buysa) : örneğin bir arka plan programı çalıştırırsanız muhtemelen durum böyle değildir beklemek biter :-).
Not:
bekle $ {!}, son arka plan işleminin $!
PID'sinin bulunduğu "son arka plan işlemi tamamlanana kadar bekleyin" anlamına gelir . Yani wait ${!}
hemen sonrasına koymak , arka planda göndermeden program_2 &
doğrudan yürütmeye eşdeğerdir.program_2
&
Yardımından wait
:
Syntax
wait [n ...]
Key
n A process ID or a job specification