프로세스 PID X가있는 경우 실행중인 디렉토리를 어떻게 찾을 수 있습니까? ps aux | grep X
호출 된 전체 명령 줄을 볼 수 있습니다 . 그러나이 경우에는 ./script.sh
이며 script.sh
실행중인 것을보고 싶습니다 .
답변
문제 /proc/PID/exe
는 쉘 스크립트의 경우 쉘의 위치를 보여줍니다. 문제 는 프로세스 /proc/PID/cwd
의 현재 작업 디렉토리를 보여줍니다 . 프로세스가 디렉토리를 변경하면 해당 symlink의 대상에 반영됩니다.
스크립트가 시작될 당시 $ 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
.