如何查看程序运行的可执行文件?

如何查看程序运行的可执行文件?

有没有办法查看或获取程序使用的可执行文件列表?

一个具体的例子是文件滚轮。有没有一种方法可以查看它使用哪些可执行文件,如果有多个可执行文件可以用于同一任务,例如 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 文件。topfile-roller

提取 rar 文件时,请查看终端。如果unrar正在使用,则顶级进程将为unrar;如果p7zip-rar正在使用,则顶级进程将为7z

相关内容