Como vejo os executáveis executados por um programa?

6

Existe uma maneira de visualizar ou obter uma lista de executáveis que um programa usa?

Um exemplo particular é o file-roller. Existe uma maneira de ver quais executáveis ele usa, se houver mais de um executável que ele possa usar para a mesma tarefa, por exemplo, unrar e p7zip-rar.

O programa 'ldd' pode ser usado para ver as bibliotecas que um programa usa, embora não em tempo real. Existe um equivalente para executáveis, preferencialmente em tempo real? Ou algum outro método?

    
por Eric 24.05.2014 / 19:09

2 respostas

6

Experimente começar com strace . Quando um programa chama outro, ele usa uma das chamadas do sistema exec . Por exemplo, dado o seguinte script ruby:

#!/usr/bin/env ruby
system("ls")
system("df")

Eu posso grep strace output para descobrir quais executáveis ele executa:

$ 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

O -f garante que o strace também rastreie os processos filhos. No começo, você pode ver o shell executando meu script e o interpretador de ruby. Então podemos ver que este script também executa / bin / ls e / bin / df. Observe que esse método mostrará apenas os executáveis que são usados no tempo de execução, não todos os executáveis que podem ter sido usados se o estado do tempo de execução tiver sido diferente.

    
por 24.05.2014 / 19:49
-2

Um método fácil é usar top .

Para determinar se file-roller está usando unrar ou p7zip-rar , basta iniciar top em um terminal e extrair um grande arquivo rar usando file-roller .

Enquanto o arquivo rar está sendo extraído, olhe para o terminal. Se unrar estiver sendo usado, o processo principal será unrar ; Se p7zip-rar estiver sendo usado, o processo principal será 7z .

    
por 28.12.2014 / 18:36