プログラムで使用される実行可能ファイルのリストを表示またはインポートする方法はありますか?
具体例は文書スクロールホイールである。 unrarやp7zip-rarなど、同じタスク用の複数の実行可能ファイルがある場合は、どの実行可能ファイルを使用しているかを確認する方法はありますか?
"ldd"プログラムを使用すると、プログラムで使用されているライブラリを表示できますが、リアルタイムでは表示できません。同等の実行ファイルはありますか?好ましくはライブですか?それとも別の方法?
答え1
から始めましょうストレス。プログラムが別のプログラムを呼び出すときは、これらのexec
システム呼び出しの1つを使用してください。たとえば、次の Ruby スクリプトが提供されます。
#!/usr/bin/env ruby
system("ls")
system("df")
strace
出力をgrepして、どの実行ファイルが実行されているかを確認できます。
$ strace -f ./test.rb 2>&1 | grep exec
execve("./test.rb", ["./test.rb"], [/* 23 vars */]) = 0
execve("/opt/opscode/embedded/bin/ruby", ["ruby", "./test.rb"], [/* 23 vars */]) = 0
[pid 7696] read(5, "ame+. If the +exec_name+\n # is"..., 8192) = 8192
[pid 7698] execve("/bin/ls", ["ls"], [/* 23 vars */] <unfinished ...>
[pid 7698] <... execve resumed> ) = 0
[pid 7700] execve("/bin/df", ["df"], [/* 23 vars */] <unfinished ...>
[pid 7700] <... execve resumed> ) = 0
これ-f
により、straceは子プロセスも追跡できます。最初は、私のスクリプトを実行しているシェルとRubyインタプリタを見ることができます。これにより、このスクリプトが/bin/lsおよび/bin/dfも実行していることがわかります。この方法では、実行時に使用された実行可能ファイルのみが表示され、実行時の状態が異なる場合に使用できる実行可能ファイルはすべて表示されません。
答え2
簡単な方法はを使用することですtop
。
file-roller
または使用するかどうかを決定するには、unrar
端末で実行してp7zip-rar
。top
file-roller
rarファイルの抽出中に端末を見てください。使用している場合はunrar
最上位プロセスがunrar
、使用中の場合はp7zip-rar
最上位プロセスはです7z
。