작업을 실행할 때 출력을 리디렉션할 출력 파일을 잊어버릴 때가 있습니다. 출력 리디렉션 부분을 포함하여 작업을 실행할 때 사용되는 전체 명령을 얻으려면 어떻게 해야 합니까?
예를 들어, 내가 달릴 때
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}/fd
stdout(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
...