
프로세스 PID X가 있는 경우 해당 프로세스가 실행 중인 디렉터리를 어떻게 알 수 있나요? ps aux | grep X
호출된 전체 명령줄을 통해 확인할 수 있습니다 . 그러나 이 경우에는 이고 ./script.sh
어느 것이 실행되고 있는지 확인하고 싶습니다 script.sh
.
답변1
문제는 /proc/PID/exe
쉘 스크립트의 경우 쉘 위치를 표시한다는 것입니다. 문제는 /proc/PID/cwd
다음과 같습니다.현재의프로세스의 작업 디렉토리. 프로세스가 디렉터리를 변경하면 이는 해당 심볼릭 링크의 대상에 반영됩니다.
그러면 스크립트가 시작될 당시 $PWD가 무엇인지 표시됩니다("PID"가 표시되는 위치에 관심 있는 프로세스 ID로 대체).
procdir=$(grep -az "\bPWD" /proc/PID/environ); echo $procdir
또는 간단하게:
grep -az "\bPWD" /proc/PID/environ
그러면 상대 디렉토리 또는 절대 디렉토리가 사용되었는지 확인할 수 있도록 시작한 명령이 표시됩니다.
proccmd=$(grep -az PROC_NAME /proc/PID/cmdline); echo $proccmd
또는 간단하게:
grep -az PROC_NAME /proc/PID/cmdline
이 두 가지를 함께 사용하면 어떤 스크립트가 실행되고 있는지 표시됩니다. 일단 시작하려면 ./
필요한 것은 procdir
.
답변2
더 간단한 대답이 있습니다. pwdx
자세한 내용은 을 사용하는 것입니다.여기