프로그램의 실행 파일을 보는 방법은 무엇입니까?

프로그램의 실행 파일을 보는 방법은 무엇입니까?

프로그램에서 사용하는 실행 파일 목록을 보거나 가져오는 방법이 있습니까?

구체적인 예는 문서 스크롤 휠입니다. unrar 및 p7zip-rar와 같이 동일한 작업에 대한 실행 파일이 여러 개 있는 경우 어떤 실행 파일을 사용하는지 확인할 수 있는 방법이 있습니까?

"ldd" 프로그램을 사용하면 프로그램에서 사용하는 라이브러리를 볼 수 있지만 실시간으로 볼 수는 없습니다. 동등한 실행 파일이 있습니까? 바람직하게는 라이브입니까? 아니면 다른 방법?

답변1

부터 시작해 보세요스트레스. 프로그램이 다른 프로그램을 호출할 때 이러한 exec시스템 호출 중 하나를 사용합니다. 예를 들어, 다음 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가 하위 프로세스도 추적할 수 있습니다. 처음에는 내 스크립트를 실행하는 쉘과 루비 인터프리터를 볼 수 있습니다. 그러면 이 스크립트가 /bin/ls 및 /bin/df도 실행하는 것을 볼 수 있습니다. 이 방법은 런타임에 사용된 실행 파일만 표시하며, 런타임 상태가 다를 경우 사용할 수 있는 모든 실행 파일은 표시하지 않습니다.

답변2

쉬운 방법은 을 사용하는 것입니다 top.

file-roller또는 사용 할지 여부를 결정하려면 unrar터미널에서 실행하고 p7zip-rar.topfile-roller

rar 파일을 추출하는 동안 터미널을 살펴보세요. 사용 중인 경우 unrar최상위 프로세스는 이고 unrar, 사용 중인 경우 p7zip-rar최상위 프로세스는 입니다 7z.

관련 정보