Linux-프로세스의 현재 작업 디렉토리를 찾으십니까?


11

프로세스 PID X가있는 경우 실행중인 디렉토리를 어떻게 찾을 수 있습니까? ps aux | grep X호출 된 전체 명령 줄을 볼 수 있습니다 . 그러나이 경우에는 ./script.sh이며 script.sh실행중인 것을보고 싶습니다 .

답변:


11

문제 /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.


pwdx가 이것보다 낫습니다.
Bjorn

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.