Linux 下 strace的妙用,追踪应用程序使用了哪些所谓的“数据库”文件
2015-01-21 11:03
337 查看
Linux下很多命令,是基于“缓存文件”来完成的,比如rpm -q 的查询命令,locate文件查找命令,whatis,man -f,man -k等命令,都是根据缓存文件查找的。
有时候我们可能因为自己的好奇心,或者因为系统故障等原因需要对这些应用程序操作的文件做一下处理,可是问题是:这些数据库文件在哪?
除了常用的那些我们可能记得住,但是并不可能把每个文件位置都记住的,当然也没必要。
那么要用的时候,怎么确定这些文件的位置呢?strace 是我觉得一个很不错的命令。
本来strace 是追踪一个程序执行时,内部调用了哪些系统调用(system call),所以这个命令叫做strace:是应该system call trace 的意思。
Linux内核内部分了几个模块,分别是:file文件处理模块或者说文件系统模块,process 进程模块,ipc进程通信模块,network 网络模块。
因为我们是查找数据库位置的,我们知道应用程序执行时,肯定会去对数据库文件操作的,那就避免不了file 类的系统调用,所以我们用strace 追踪file系统调用。
strace -e trace=file rpm -ql locate gdb
这条命令执行 locate gdb ,查看gdb文件位置。并且用strace追踪这条命令执行时,调用了哪些系统调用,因为我们只对文件操作感兴趣,所以用 -e trace=file。-e 是expression的意思。
输出内容有时候有些繁琐,我们可以从定向到某个文件,比如重定向到
out.locate
strace -e trace=file rpm -ql locate gdb >>out.locate 2>&1
将标准描述符1 和 2 都重定向到 out.locate
重定向完毕后:因为我们知道应用程序使用的数据文件一般都在var目录中,所以我们可以进入目录,然后搜索“var”,或者直接在命令行用 grep "var" out.gdb搜索var,然后根据结果,推断应用程序的数据文件具体位置。
有时候我们可能因为自己的好奇心,或者因为系统故障等原因需要对这些应用程序操作的文件做一下处理,可是问题是:这些数据库文件在哪?
除了常用的那些我们可能记得住,但是并不可能把每个文件位置都记住的,当然也没必要。
那么要用的时候,怎么确定这些文件的位置呢?strace 是我觉得一个很不错的命令。
本来strace 是追踪一个程序执行时,内部调用了哪些系统调用(system call),所以这个命令叫做strace:是应该system call trace 的意思。
Linux内核内部分了几个模块,分别是:file文件处理模块或者说文件系统模块,process 进程模块,ipc进程通信模块,network 网络模块。
因为我们是查找数据库位置的,我们知道应用程序执行时,肯定会去对数据库文件操作的,那就避免不了file 类的系统调用,所以我们用strace 追踪file系统调用。
strace -e trace=file rpm -ql locate gdb
这条命令执行 locate gdb ,查看gdb文件位置。并且用strace追踪这条命令执行时,调用了哪些系统调用,因为我们只对文件操作感兴趣,所以用 -e trace=file。-e 是expression的意思。
输出内容有时候有些繁琐,我们可以从定向到某个文件,比如重定向到
out.locate
strace -e trace=file rpm -ql locate gdb >>out.locate 2>&1
将标准描述符1 和 2 都重定向到 out.locate
重定向完毕后:因为我们知道应用程序使用的数据文件一般都在var目录中,所以我们可以进入目录,然后搜索“var”,或者直接在命令行用 grep "var" out.gdb搜索var,然后根据结果,推断应用程序的数据文件具体位置。
相关文章推荐
- 将assets目录下的数据库文件拷贝到当前应用程序下的files目录下,并加载使用
- linux查文件被哪些程序占用—fuser和lsof的使用
- Linux下使用RMAN迁移文件系统数据库到ASM
- linux查文件被哪些程序占用—fuser和lsof的使用
- 将Oracle数据库改为归档模式并启用RMAN备份 如下Linux环境下对Oracle单节点数据库采用文件系统情况的配置归档模式过程。首先查看数据库归档模式和磁盘使用情况,确定归档文件放到什么位置。
- 使用Toad插件SQLTracker追踪应用程序与数据库的交互
- Android SQlite数据库的使用(三)-将数据库文件连同应用程序一起发布
- linux命令 — lsof 查看进程打开哪些文件 或者 查看文件给哪个进程使用-zt
- Linux系统下HTML5使用SQLite后数据库文件的存放位置
- linux命令 — lsof 查看进程打开哪些文件 或者 查看文件给哪个进程使用-zt
- 什么是沙盒(sandbox)?沙盒包含哪些文件,描述每个文件的使用场景。如何获取这些文件的路径?如何获取应用程序包中文件的路径?
- Linux下Qt应用程序的发布(使用LDD命令查看所有依赖的库文件)
- 学习笔记 --- LINUX 应用调试之使用strace命令追踪系统调用
- Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示(待补全)
- 在linux系统中使用windows应用程序打开本地文件
- linux上的文件管理类命令有哪些,常用的使用方法及其相关实例演示
- 使用标记文件更新和查询数据库
- 使用.NET开发数据库应用程序(2)---给初学者看的文章
- 使用.NET开发数据库应用程序(1)---给初学者看的文章
- 在vb.net中使用数据库备份文件还原sqlserver数据库