答え1
あなたはそれを使用することができますlsof
(ほとんどすべてのUnixバリアントに適用されますが、通常はデフォルトインストールの一部ではありません。)プロセスで使用されるすべてのファイルを一覧表示します。 「使用済み」には、開かれたファイル記述子だけでなく、プロセスが実行されている実行可能ファイルなど、密接に関連する概念も含まれます。実行ファイルはtxt
FD列にあります。未知の歴史的理由。
$ lsof -p1234 | grep txt
a.out 1234 user15964 txt REG 253,0 34567 /path/to/a.out
(合成産物)
SolarisとLinuxにはより直接的なアプローチがあります。プロセスファイルシステム実行中の実行可能ファイルを含む各プロセスに関する情報を提供します。 (少なくともLinuxではここlsof
から情報を取得できます。)
$ ls -l /proc/1234/exe
lrwxrwxrwx 1 root root 0 Feb 30 34:56 /proc/1234/exe -> /path/to/a.out
特定の実行可能ファイルを実行するプロセスを探している場合は、次を実行してください。フューザー。
$ fuser /path/to/a.out
/path/to/a.out: 1234e 1239e
答え2
一般的な答えはありません。最新のLinuxでは、/proc/$PID
数値プロセスIDがどこにあるかを確認できます。出力から取得$PID
できます。top
ls -l /proc/$PID/exe
exe
シンボリックリンクの場所が表示されます。これは実行可能ファイルのフルパスですa.out
。