Linux – 找出进程的当前工作目录?

如果我有一个进程PID X,我怎么能找出它运行在什么目录? 我可以看到ps aux | grep X ps aux | grep X它被调用的完整命令行。 但在这种情况下,它是./script.sh ,我想看看它正在运行的script.sh

    /proc/PID/exe的问题在于,对于shell脚本,它显示了shell的位置。 /proc/PID/cwd的问题是显示进程的当前工作目录。 如果进程更改目录,则反映在该符号链接的目标中。

    这将显示脚本启动时的$ PWD是什么(用你感兴趣的进程IDreplace你看到的“PID”):

     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 ,详细在这里