実行中のプロセスから絶対パスほしくて調べたけど、誰得なんだろう。
プロセスID 1234 で使っているプログラムの絶対パスを得る
ls -l /proc/1234/exe | awk {'print $11'}
もはや常識
プログラムが生成したプロセスIDを記したファイルから読み取る方法もあります。
ls -l /proc/`cat PID_FILE`/exe | awk {'print $11'}
常套手段
でもプロセスIDは変動するからいちいち調べるのめんどい。
プログラム名は固定なんだからそこから得られてもいいじゃん。
ls -l /proc/*/exe 2>&1 | awk {'print $11'} | grep プロセス名
ただし、これはバイナリファイルのみであって、
スクリプトファイルでは/bin/bashとかに置き換わってしまうので、とれません。
ps -xをやってみるとわかると思います。
では無理なのか、というとそうでもなく、
/proc/*/fd の下にそのスクリプトファイルのパスがあるはずなので、そこから得ることができます。
ls -l /proc/*/fd 2>&1 | awk {'print $11'} | grep プロセス名
ちなみに、これらはプロセスIDを得ることができません。
(得られるのはあくまで絶対パスのみ。上二つは元々プロセスIDを知っている前提。)
プロセスID取得はこんなかんじで出来ます。
ps -A | grep プロセス名 | awk {'print $1'}
もはや書くことでもなかった・・・