이 질문은 이 질문과 중복되지 않습니다.실행 중인 프로세스의 현재 작업 디렉터리를 찾으십니까?, 왜냐하면쓰기 디렉터리는 작업 디렉터리와 다를 수 있습니다.
예를 들어 my_script.sh
~/에서 두 프로세스를 두 번(하나씩) 실행하여 시작합니다.
에서는 my_script.sh
timestamp라는 폴더에 출력을 기록했습니다. 따라서 작업 디렉터리가 동일하더라도 두 프로세스는 실제로 ~/1212_000001/
및 와 같은 서로 다른 디렉터리에 씁니다 ~/1212_000003/
. (첫 번째 프로세스는 12월 12일 00:00:01에 시작되었으며, 두 번째 프로세스는 2초 후에 시작되었습니다.)
연결된 질문의 솔루션은 ~/
두 프로세스 모두에 대해 동일한 결과를 반환하므로 내 목적에 부합하지 않습니다.
어떻게 하나요?
답변1
스크립트 작성 방법에 따라 다릅니다.
- 직접 리디렉션하는 경우(예:
my_script.sh > ~/1212_000001/some_file
)를 사용할 수lsof -p <script-pid>
있으며 출력 디렉터리에 열린 파일이 표시됩니다. - 그렇지 않으면 '의 출력은
ps axjf
스크립트에 의해 시작된 하위 프로세스의 pid 종속성을 표시하므로 명령 인수에 즉시 정보를 제공하거나lsof -p <sub-process-pid>
하위 프로세스에서 실행할 수 있습니다.
물론, 이 방법은 짧은 시간 내에 이런 일이 발생하면 효과가 없습니다.
"strace" 명령을 사용하여 "open" 호출을 찾을 수도 있습니다.