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/exe
is that, for shell scripts, it shows the location of the shell. The problem with/proc/PID/cwd
is 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 $procdir
or simply:
grep -az "\bPWD" /proc/PID/environ
This 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 $proccmd
or simply:
grep -az PROC_NAME /proc/PID/cmdline
Together, 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