我想知道打开某个应用程序时屏幕后面会发生什么。比如我打开firefox的时候,想知道读取了哪些文件,执行了哪些文件。有没有办法做到这一点。即使从终端打开 Firefox 也不显示任何信息。操作系统:Ubuntu 12.04
ntn*_*nja 21
使用strace!
示例:列出 Firefox 在会话期间打开的所有文件:
strace -f firefox 2>&1 | grep 'open('
如果您打开 FireFox 的第二个实例,则会产生类似这样的结果:http : //pastebin.com/iRqxgiWN('-f' 选项只会让 strace 跟随进程分叉。)
示例 2:列出 FireFox 执行的所有进程:
strace -f firefox 2>&1 | grep -P 'exec[vlpe]*\('
Run Code Online (Sandbox Code Playgroud)
访问 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
Run Code Online (Sandbox Code Playgroud)
您也可以使用许多其他系统调用来执行此操作...
通过匹配搜索中的参数,open()您grep还可以找出文件以哪种模式打开:
只需添加| grep -P 'O_RDONLY|O_RDWR'(前导管道字符很重要!)以过滤读取访问或| grep -P 'O_WRONLY|O_RDWR'对命令的写入访问...
编辑:
正如评论中提到的,您还可以strace -fe open firefox用来列出 FireFox 打开的所有文件。您还可以strace -fe trace=file firefox用于列出FireFox 执行的所有文件操作,这些操作将文件路径作为参数(open、stat、lstat、chmod、access 等)。
还有更多可用!查看strace(1)手册页。
| 归档时间: |
|
| 查看次数: |
909 次 |
| 最近记录: |