有没有办法查看或获取程序使用的可执行文件列表?
一个具体的例子是文件滚轮。有没有一种方法可以查看它使用哪些可执行文件,如果有多个可执行文件可以用于同一任务,例如 unrar 和 p7zip-rar。
程序“ldd”可用于查看程序使用的库,但不是实时的。是否有可执行文件的等效项,最好是实时的?或者其他方法?
答案1
尝试从斯特雷斯。当一个程序调用另一个程序时,它会使用其中一个exec
系统调用。例如,给定以下 ruby 脚本:
#!/usr/bin/env ruby
system("ls")
system("df")
我可以 grepstrace
输出来找出它运行的可执行文件:
$ 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 也跟踪子进程。一开始你可以看到 shell 执行我的脚本和 ruby 解释器。然后我们可以看到这个脚本还执行了/bin/ls和/bin/df。请注意,此方法只会显示运行时使用的可执行文件,而不是显示运行时状态不同时可能使用的所有可执行文件。
答案2
一个简单的方法是使用top
.
要确定是否file-roller
使用unrar
或,只需在终端中p7zip-rar
启动,然后使用 提取一个大的 rar 文件。top
file-roller
提取 rar 文件时,请查看终端。如果unrar
正在使用,则顶级进程将为unrar
;如果p7zip-rar
正在使用,则顶级进程将为7z
。