실행 중인 프로세스의 출력 리디렉션 부분 가져오기

실행 중인 프로세스의 출력 리디렉션 부분 가져오기

작업을 실행할 때 출력을 리디렉션할 출력 파일을 잊어버릴 때가 있습니다. 출력 리디렉션 부분을 포함하여 작업을 실행할 때 사용되는 전체 명령을 얻으려면 어떻게 해야 합니까?

예를 들어, 내가 달릴 때

nohup python3 -c $'from time import sleep;\nfor i in range(100): print(i); sleep(1)' > .test.txt &

무언가를 인쇄 .test.txt하고 100초 동안 실행한 다음 실행하거나 ps -fp <PID>확인해야 /proc/<PID>/cmdline합니다.

python3 -c from time import sleep; for i in range(100): print(i); sleep(1)

나는 몇 가지 해결책을 시도했습니다.Unix/Linux 시스템에서 실행 중인 프로세스에 명령줄 인수를 전달하는 방법은 무엇입니까?, 하지만 내 명령이 잘린 것 같지 않습니다.

작업이 완료될 때 명령을 실행하는 셸이 여전히 열려 있으면 전체 경로가 표시됩니다.

[1]+  Done                    nohup python3 -c 'from time import sleep;
for i in range(100): print(i); sleep(1)' > .test.txt

이 정보는 작업을 실행하는 셸에만 저장됩니까?

편집하다:history@muru 결국 내 주문이 이루어졌다는 것을 깨달았습니다 . 감사합니다.

답변1

실행 중인 프로세스의 pid가 있으면 ls -l /proc/${pid}/fdstdout(fd 1) 및 stderr(fd 2)이 기록되는 위치가 표시됩니다.

답변2

단일 ">"가 파일을 덮어쓰게 됩니다. 파일 끝에 ">>"를 추가해 보십시오.

[admin@srv1 ~]$ for x in $(seq 1 100); do echo $x >> test.txt; done
[admin@srv1 ~]$ head -n 25 test.txt
1
2
...                                                                                                                                                                                                    

관련 정보