
プロセス 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
詳細に説明したように、を使用することです。ここ