LinuxでプロセスIDから絶対パスを取得する方法を教えてください。


「ps x」などで調べると、実行時のコマンド名までは表示されるのですが「./Hoge」のように表示され、例えば違うディレクトリで同じモジュールを実行した際に区別がつきません。

PIDからそのプロセスの絶対パスを調べる方法はあるのでしょうか?

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2006/11/13 21:47:06
  • 終了:2006/11/20 21:50:53

回答(2件)

id:znz No.1

znz回答回数193ベストアンサー獲得回数252006/11/13 22:04:43

ポイント35pt

スクリプトではない普通の実行ファイルなら、

ls -l /proc/$PID/exe

のように/proc/プロセスID/exeにシンボリックリンクとして実行ファイルのパスが見えます。

スクリプトの場合は /proc/プロセスID/cmdline に "\0"(NUL文字) 区切りで実行したコマンドラインが入っているので、そのコマンドラインと /proc/プロセスID/cwd にシンボリックリンクとして見えるそのプロセスのカレントワーキングディレクトリ(と必要なら/proc/プロセスID/rootにシンボリックリンクとして見えるそのプロセスからみたルートディレクトリ(chrootで変わる))から推測するしかなさそうです。

スクリプトで、すでにchdirしている後だと無理そうです。

http://www.linux.or.jp/JM/html/LDP_man-pages/man5/proc.5.html

id:b-wind No.2

b-wind回答回数3344ベストアンサー獲得回数4402006/11/13 22:33:28

ポイント35pt

基本的には1の回答と同じです。

/proc 以下に実行中のプロセス情報がファイルとして見えますので、そこから探し出す形になります。

http://www.atmarkit.co.jp/flinux/special/proctune/proctune01b.ht...

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません