If i have a process PID X, how can I find out what directory it was running in? I can see with ps aux | grep X the full command line that it was invoked with. However in this case it's ./script.sh, and I want to see which script.sh it's running.
-
The problem with
/proc/PID/exeis that, for shell scripts, it shows the location of the shell. The problem with/proc/PID/cwdis that is shows the current working directory of the process. If the process changes directories, that is reflected in the target of that symlink.This will show what the $PWD was at the time the script was started (substitute the process ID you're interested in where you see "PID"):
procdir=$(grep -az "\bPWD" /proc/PID/environ); echo $procdiror simply:
grep -az "\bPWD" /proc/PID/environThis will show the command that started it so you can see if a relative or absolute directory was used:
proccmd=$(grep -az PROC_NAME /proc/PID/cmdline); echo $proccmdor simply:
grep -az PROC_NAME /proc/PID/cmdlineTogether, these should show you which script is being run. For one started with
./all you need isprocdir.From Dennis Williamson -
There's a simpler answer, and that's to use
pwdx, as detailed hereFrom Markus Jevring
0 comments:
Post a Comment