Linux - 找出進程的目前工作目錄?

Linux - 找出進程的目前工作目錄?

如果我有一個進程 PID X,我怎麼能找到它運行在哪個目錄中?我可以看到ps aux | grep X調用它的完整命令行。但在本例中它是./script.sh,我想看看它script.sh正在運行。

答案1

問題是/proc/PID/exe,對於 shell 腳本,它顯示 shell 的位置。問題/proc/PID/cwd是這表明目前的行程的工作目錄。如果程序變更目錄,則會反映在該符號連結的目標中。

這將顯示腳本啟動時 $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

答案2

有一個更簡單的答案,就是使用pwdx,詳細說明這裡

相關內容