소유하지 않은 프로그램의 STDOUT은 어디로 향합니까?


11

이 질문의 후속 조치로 , 내가 실행 한 프로그램의 STDOUT 및 STDERR이 어디로 disown -h리디렉션 되는지 알고 싶습니다 .

답변:


10

disown프로그램 STDOUT / ERR을 변경하지 않습니다. 리디렉션 한 위치 (예 : >등) 로 계속 이동합니다 . 리디렉션하지 않으면 프로그램을 시작한 터미널로 계속 이동합니다 (터미널을 닫을 때까지 폐기됩니다).

이를 설명하기 위해 터미널에서이를 실행하십시오.

bash -c 'while true; do sleep 1; echo hi; done' &

이것은 매 초마다 "hi"를 출력 할 것이다. 이 경우 disown프로그램 시작 후, "안녕하세요"S는 계속 될 것이다. 쉘의 PID (예 : ps를 사용하여)를 찾아서 중지 시키려면 종료해야합니다.

편집하다:

당신이 후 의견을 바탕으로, 어쩌면 당신이 정말로 원하는 것은 프로그램의 출력을 복구하는 것입니다 disown그것을 에드 그것이 실행 된 터미널을 폐쇄이이 질문에 설명되어 있습니다 :. 사후 원격 nohup을 tcsh가와 ( quack quixote 덕분에).


그의 이전 질문에 따르면, 사실 그는 이전 터미널을 닫았다는 것입니다. 그러면 어떻게 출력을 얻을 수 있습니까?
Gnoupi

@ Gnoupi : 출력을 다시 얻을 수있는 방법이 없다고 생각합니다. 적어도 나는 어떤 방법도 들어 본 적이 없습니다.
sleske

의견 주셔서 감사합니다 Gnoupi :-) 사실, 출력을 찾을 수 없습니다. 나는 :-)하지만 계속 찾고 있습니다
쓰론

1
이것이 실제로 해답입니다. disown은 아무것도 바꾸지 않습니다. 프로세스를 시작할 때 캡처 또는 리디렉션을 설정해야합니다 . 나중에 필요할 경우 gdb 는 (유일한) 친구입니다 : superuser.com/questions/50058/…
quack quixote

@quack-도구가 아니라 실제 사용 사례를 강조하기 위해 질문에 리팩토링이 필요하다고 말하고 싶습니다. 현재 양식 (Disown 중심)에서 이것은 실제로 정답입니다. 그러나 이전 질문과 관련하여 사용자는 단순히 출력을 복구하기를 원하며,이 경우 귀하의 링크가 답입니다.
Gnoupi
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.