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

  • Distractify

    Distractify

    1 Aralık 2011
  • Sean Murphy

    Sean Murphy

    4 ŞUBAT 2009
  • TopOfTheTech

    TopOfTheTech

    5 NİSAN 2010