프로세스가 어느 디렉토리에 쓰고 있는지 알아보세요.

프로세스가 어느 디렉토리에 쓰고 있는지 알아보세요.

이 질문은 이 질문과 중복되지 않습니다.실행 중인 프로세스의 현재 작업 디렉터리를 찾으십니까?, 왜냐하면쓰기 디렉터리는 작업 디렉터리와 다를 수 있습니다.

예를 들어 my_script.sh~/에서 두 프로세스를 두 번(하나씩) 실행하여 시작합니다.

에서는 my_script.shtimestamp라는 폴더에 출력을 기록했습니다. 따라서 작업 디렉터리가 동일하더라도 두 프로세스는 실제로 ~/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" 호출을 찾을 수도 있습니다.

관련 정보