응용 프로그램을 열 때 어떤 파일이 실행되는지 어떻게 알 수 있습니까?


12

일부 응용 프로그램을 열 때 화면 뒤에서 발생하는 일을 알고 싶습니다. 예를 들어, 파이어 폭스를 열 때 어떤 파일을 읽고 실행하는지 알고 싶습니다. 이것을 할 수있는 방법이 있습니까? 터미널에서 파이어 폭스를 열어도 정보가 표시되지 않습니다. 운영체제 : Ubuntu 12.04

답변:


21

사용 strace!

예 : 세션 중에 Firefox가 연 모든 파일을 나열하십시오.

strace -f firefox 2>&1 | grep 'open('

이 같은 결과는 파이어 폭스의 두 번째 인스턴스를 열 경우 : http://pastebin.com/iRqxgiWN 합니다 ( '-f'옵션은 strace를 추적 과정 포크한다.)

예 2 : FireFox에서 실행 한 모든 프로세스를 나열합니다.

strace -f firefox 2>&1 | grep -P 'exec[vlpe]*\('

YouTube를 방문하면 다음과 같은 결과가 나타납니다.

[pid 25020] execve("/usr/lib/firefox/plugin-container", ["/usr/lib/firefox/plugin-containe"..., "/usr/lib/adobe-flashplugin/libfl"..., "-greomni", "/usr/lib/firefox/omni.ja", "-appomni", "/usr/lib/firefox/browser/omni.ja", "-appdir", "/usr/lib/firefox/browser", "15198", "false", "plugin"], [/* 57 vars */]) = 0
[pid 25024] execve("/bin/sh", ["sh", "-c", "ps x | grep netscape"], [/* 57 vars */]) = 0
[pid 25025] execve("/bin/ps", ["ps", "x"], [/* 57 vars */] <unfinished ...>
[pid 25026] execve("/bin/grep", ["grep", "netscape"], [/* 57 vars */]) = 0

다른 많은 시스템 호출 에서도이 작업을 수행 할 수 있습니다 ...

의 매개 변수와 일치하여 open()당신의 grep검색 당신은 또한 어떤 모드에서 파일가 열려 찾을 수 있습니다 :

| grep -P 'O_RDONLY|O_RDWR'읽기 액세스를 필터링하거나 | grep -P 'O_WRONLY|O_RDWR'명령에 대한 쓰기 액세스를 위해 추가 (앞의 파이프 문자가 중요합니다!)

편집 :

주석에서 언급했듯이 strace -fe open firefoxFireFox에서 연 모든 파일을 나열 하는 데 사용할 수도 있습니다 . FireFox에서 파일 경로를 인수로 갖는 모든 파일 작업 strace -fe trace=file firefox을 나열 하는 데 사용할 수도 있습니다 (open, stat, lstat, chmod, access, ...).

더 많은 것이 가능합니다! 아웃 확인 의 strace (1) 매뉴얼 페이지를.


1
파이어 폭스가 프로세스 목록에서 "netscape"를 grep하기 위해 쉘을 실행한다는 것에 다소 놀랐습니다.
Michael

1
strace에는 광범위한 내장 필터링 기능이 있습니다. 예를 들어에 대한 strace -e open호출 만 표시 하십시오 open().
John Kugelman

@Michael 쉘 구문 인 파이프 ( "|")를 사용하기 때문에 쉘을 생성합니다. 코드에서 동일한 파이프를 수동으로 설정할 수 있지만 쉘 이스케이프 코드가 사용자로부터 전달 될 가능성이 없다는 것을 알기 만하면 쉘에서이를 수행하는 것이 훨씬 쉽습니다. 이로 인해 보안 취약성이 발생할 수 있습니다.
Alistair Buxton

1

실제로 자세한 모드라는 모드가 있지만 파이어 폭스가 그러한 옵션을 가지고 있는지 확실하지 않습니다. 그러나 모든 응용 프로그램은 로그로 구성되므로 로그 데이터를 확인하여 응용 프로그램 활동을 확인할 수 있습니다.

firefox에 대한 로그를 활성화하려면 이것을 확인할 수 있습니다

http://bertrandbenoit.blogspot.in/2011/09/activate-logging-for-mozilla.html

우분투의 모든 응용 프로그램 활동은 특정 로그로 확인할 수 있습니다. 모든 응용 프로그램은 /var/log디렉토리에 기록됩니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.