偶尔我们会有这样的需要,想要知道某个程序,对文件系统做了哪些访问。读写了那些文件。
例如,部分程序不提供配置的导出功能,可是正常情况下,配置都是持久化在硬盘上,保留在本地的。如果我们能监视到,修改配置前后,某程序对磁盘中的那些文件进行了写操作,就能顺藤摸瓜找到他的配置文件,然后通过直接覆盖配置文件进行迁移配置的工作(假定这个程序的配置不做和用户名等挂钩的加密,也不放在注册表之类)
如果在window下,有FileRiver/Filemon这些工具,都很好用。
在Mac下稍微难找些,可以用FS_Spy(要钱的,虽然可以试用一段时间),然后也有个Filemon(http://deepit.ru/products/FileMon/dist/FileMon.zip 貌似是免费的,不过图标比较另类,不知道是不是个人作品,和windows下那个同名软件应该不是一个来源)。 前者相对好用些。
类Unix系统下,比如Mac的终端下,也可以使用fs_usage这个命令来看,比如 sudo fs_usage -f filesys 123 | grep xxx (123是程序的pid, xxx是要过滤出来显示的关键字)
不过用fs_usage命令的时候,要尤其注意要用ctrl+c(而不是ctrl+z)来结束,否则第二次运行的时候会提示已经有一个实例在运行了,如果遇到这样的情况,先在命令行top找出fs_usage的pid,然后kill(-3)之
通常如果用工具的话,大体都是类似的,要么是得事前设定好关键字,要么方便点,可以做事后的过滤。一般来说都得弄好过滤条件,不然基本会眼花缭乱看不清。
以用FileMon查找MacOS里XCode的快捷键保存位置为例:
1. 打开FileMon,会看到刷啦刷啦一堆,在Fiter中输入XCode回车,然后点个New Spy Session。就干净了。
2. 之后在XCode中操作添加一个新的快捷键配置文件。然后在FileMon中可以看到如下的图
就不难猜出路径了。如图选中的行。
3. 剩下的就是增增删删文件,开开关关XCode验证了。
P.S. windows下一些其他系统监视软件
1. windows注册表:Regmon
2. 网络:Proxifier