ようこそゲスト さん ユーザー登録 ログイン

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

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

PIDからそのプロセスの絶対パスを調べる方法はあるのでしょうか? RSS LinuxでプロセスIDから絶対パスを取得する方法を教えてください。 「ps x」などで調べると、実行時のコマンド名までは表示されるのですが「./Hoge」のように表示され、例え.. を含むブックマークはてなブックマーク - LinuxでプロセスIDから絶対パスを取得する方法を教えてください。 「ps x」などで調べると、実行時のコマンド名までは表示されるのですが「./Hoge」のように表示され、例え.. - 人力検索はてな

  • kenicca あなたも質問に答えられます! ウォッチリストに追加
  • 状態:終了
  • 回答数:2 / 45件
  • 回答ポイント:70ポイント
  • 登録:2006-11-13 21:47:06
  • 終了:2006-11-20 21:50:53
  • カテゴリー:コンピュータコンピュータ

1 回答者:znz 2006-11-13 22:04:43 満足! 35ポイント

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

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

2 回答者:b-wind 2006-11-13 22:33:28 満足! 35ポイント

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

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

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

この質問・回答へのトラックバックこの質問・回答へのトラックバック