작업을 실행했습니다 (foo.sh 가정).
./foo.sh
[Press Ctrl-Z to stop]
bg # enter background
그리고 stdout 및 stderr에 대한 출력을 생성합니다. 현재 화면 대신 다른 파일로 stdout 및 stderr로 리디렉션하는 방법이 있습니까?
분명히 처음으로 귀하의 질문을 잘못 읽었으므로 여기에 업데이트 된 답변이 있습니다.
프로그램을 백그라운드로 보낸 후 먼저 PID를 찾아야합니다.
pgrep foo.sh
그런 다음 gdb
해당 프로세스에 연결하는 데 사용할 수 있습니다.
gdb -p <PID>
에서 gdb
이 프로그램에 기록 어디 다음 변경
p dup2(open("/path/to/file",577, 420), 1)
p dup2(1, 2)
그런 다음 프로세스에서 분리하고 종료합니다. gdb
detach
quit
약간의 설명
577
다음과 같다 O_CREAT|O_WRONLY|O_TRUNC
420
다음과 같다 S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH
open
은 파일 을 열고 존재하는 경우 0 바이트로 자르거나 존재하지 않는 경우 올바른 파일 권한으로 새 파일을 만듭니다.dup2
에 파일 기술자가 호출에 의해 반환 중복 open
파일 기술자 1
(이다 stdout
)dup2
중복 파일 디스크립터 1
에 대한 2
(인 stderr
)이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다