muszę skrypt bash, który wykonuje następujące czynności:Jak mogę uzyskać zarówno identyfikator procesu, jak i kod wyjścia ze skryptu bash?
- Uruchamia proces tła z całej produkcji skierowanej do pliku
- Zapisuje kod zakończenia procesu do pliku
- Zwraca PID procesu (od razu , a nie kiedy proces wychodzi).
- Skrypt musi wyjść
mogę PID ale nie kod wyjścia:
$ executable >>$log 2>&1 &
pid=`jobs -p`
Lub mogę zdobyć kod wyjścia, ale nie PID:
$ executable >>$log;
# blocked on previous line until process exits
echo $0 >>$log;
Jak mogę wykonać wszystkie te czynności w tym samym czasie?
dzięki. To całkiem blisko. Obawiam się, że odstąpiłem od jednego innego wymogu. Skrypt basha musi się zakończyć. Jeśli uruchomię "wait $ pid; echo $? >> $ log" w pomocniczym skrypcie pomocniczym, otrzymam błąd "nie jest dzieckiem". –
Jeśli chcesz, aby skrypt zakończył działanie przed zakończeniem podrzędnego, nie można zapisać kodu zakończenia dziecka bez wywoływania jakiejś anomalii temporalnej. –
Zawiń całe 'sh -c" ($ executable "'... exit-status)' & 'w nawiasach pod-powłokę. To pozwala podpowierzchniom zabrać się za życie, podczas gdy rodzic radzi sobie z tym, co musi zrobić. Możesz dodać kolejne '&' po ')'. –