W następstwie tego pytania chciałbym wiedzieć, gdzie disown -h
jest przekierowywane STDOUT i STDERR programu, na którym uruchomiłem .
W następstwie tego pytania chciałbym wiedzieć, gdzie disown -h
jest przekierowywane STDOUT i STDERR programu, na którym uruchomiłem .
Odpowiedzi:
disown
nie zmienia programów STDOUT / ERR. Będą one nadal trafiać tam, gdzie je przekierowałeś (używając >
itp.). Jeśli ich nie przekierowałeś, nadal będą przechodzić do terminala, z którego uruchomiłeś program (aż do zamknięcia tego terminala, w którym to przypadku zostaną odrzucone).
Aby to zilustrować, uruchom to w terminalu:
bash -c 'while true; do sleep 1; echo hi; done' &
Spowoduje to wydrukowanie „cześć” co sekundę (i denerwuje cię strasznie ;-)). Jeśli disown
program po uruchomieniu, „cześć” będzie po prostu kontynuowany. Musisz znaleźć PID pocisku (używając np. Ps) i zabić go, aby się zatrzymał.
Edytować:
Opierając się na komentarzach, być może naprawdę chcesz odzyskać dane wyjściowe programu po jego disown
edycji i zamknięciu terminalu, w którym był uruchomiony. Wyjaśnia to następujące pytanie: Po zdalnym uruchomieniu programu tcsh ( dzięki quack quixote).