SORU
15 EKİM 2009, PERŞEMBE


shell - arka plan işlem çıkış kodu almak

Komut CMD sonsuza kadar sürer ana bourne benim kabuk denir.

Aşağıdaki gibi komut dosyasını değiştirmek istiyorum

  1. Bir arka plan işlemi ($CMD&) olarak paralel komut CMD çalıştırın.
  2. Ana senaryoda, her birkaç kökenli komut saniye izlemek için bir döngü var. Döngü stdout için bazı mesajlar senaryonun ilerleme gösteren yankıları.
  3. Oluşturulan komut sonlandırıldığında döngüden çıkın.
  4. Ve oluşturulan işlem çıkış kodu yakalamak raporu.

    Biri bana bunu gerçekleştirmek için ipucu verebilir? Teşekkürler Bob

CEVAP
15 EKİM 2009, PERŞEMBE


1: bash son plan bu sürecin PID tutar o idam edildi. Bu monitör için ne diyeceğim, her neyse.

4: wait <n> NUMARASI ile işlemi tamamlayın (işlem tamamlandığında, işlem yapılır emin olana kadar bu ara istemeyebilirsiniz kadar engeller) bekler. wait döner sonra işlem çıkış kodu değişken $? döndürülür

2, 3: ps ps | grep " $! " süreç hala çalışır durumda olup olmadığını anlayabilirsiniz. Çıkışı anlamak ve bitirmek için nasıl karar vermek size bağlı. (ps | grep aptal geçirmez değil. Eğer zamanınız varsa daha sağlam süreci hala çalışır durumda olup olmadığını söylemek için bir yol).

Burada bir iskelet senaryo:

# simulate a long process that will have an identifiable exit code
(sleep 15 ; /bin/false) &
my_pid=$!

while   ps | grep " $my_pid "     # might also need  | grep -v grep  here
do
    echo $my_pid is still in the ps output. Must still be running.
    sleep 3
done

echo Oh, it looks like the process is done.
wait $my_pid
my_status=$?
echo The exit status of the process was $my_status

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • KIT KAT

    KIT KAT

    3 EKİM 2005
  • Klemens Torggler

    Klemens Torg

    11 Mart 2008
  • newreleaseblitz

    newreleasebl

    13 Ocak 2010