Nowe posty

Autor Wątek: Bash: ukrycie wiadomości o zakończeniu/unicestwieniu potomnego procesu  (Przeczytany 2998 razy)

Offline ultr

  • Users
  • Guru
  • *****
  • Wiadomości: 1177
    • Zobacz profil
Mam skrypt, w którym wykonywanych jest wiele podprocesów, a następnie albo się kończą, albo po jakimś czasie je zabijam:
[...]
proces1 | preces2 | proces3 | proces4 &
pid=$!
[...]
Niestety przy zakończeniu albo zabiciu bash informuje o tym fakcie użytkownika. Co trochę zaśmieca ekran.

Ostatecznie udało się rozwiązać problem przez dodanie na początku skryptu:
exec 2> /dev/null
który powoduje przekierowanie wyjścia błędów (stderr) skryptu do /dev/null

Piszę, bo może komuś się to przyda, a chętnie też dowiem się, czy da się to rozwiązać inaczej.

arctgx

  • Gość
Bash: ukrycie wiadomości o zakończeniu/unicestwieniu potomnego procesu
« Odpowiedź #1 dnia: 2009-06-15, 22:19:21 »
Zacząłem przeglądać świeższą, angielską wersję podręcznika i też na razie nie trafiłem na odpowiedź. Zapewne w dziale o kontroli zadań byłoby coś wspomniane.

Gdyby nie zależało Ci na kontroli nad tymi zadaniami ze strony powłoki, możesz je oderwać poleceniem disown (np. z parametrem -a). To też nie rozwiązanie.

Przy okazji: nie potrafię zrozumieć dlaczego sztuczka z exec działa właśnie tak. Cokolwiek znalazłem w sieci na ten temat, to bez tłumaczenia dlaczego.