Linux - プロセスの現在の作業ディレクトリを確認しますか?

Linux - プロセスの現在の作業ディレクトリを確認しますか?

プロセス PID X がある場合、どのディレクトリで実行されていたかを知るにはどうすればよいですか?ps aux | grep X呼び出された完全なコマンド ラインで確認できます。ただし、この場合は であり./script.sh、どれが実行されているかを確認したいのですscript.sh

答え1

の問題点/proc/PID/exeは、シェルスクリプトの場合、シェルの場所が表示される/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詳細に説明したように、を使用することです。ここ

関連情報