Linux 下 strace的妙用,追踪应用程序使用了哪些所谓的“数据库”文件

本文介绍如何使用strace命令追踪Linux应用程序操作的缓存文件位置。通过指定跟踪file系统调用,可以找到应用程序使用的数据库文件的具体路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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,然后根据结果,推断应用程序的数据文件具体位置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值