如何检索 RAM 中缓存的文件?

如何检索 RAM 中缓存的文件?

有些应用程序不会在磁盘上写入缓存文件,而是直接写入 RAM,因此您无法备份、分析或对其执行任何操作。

我如何检索(即保存到磁盘)它们在 RAM 中缓存的文件?
我将采用任何方法:实用程序、脚本、终端命令…(我运行的是 OS X 10.6.8)

答案1

打开终端lsof -n输入打印所有打开的文件. 如果他们真的是缓存文件,它们应该会显示在这里。不幸的是,它显示所有进程的所有打开的文件。如果您想将输出限制为相关应用程序打开的文件,找出进程 ID(PID)正在运行的应用程序和类型,例如,lsof -np 1094如果 PID 为 1094。

答案2

我不确定你在要求什么(因为程序不需要——通常只是— 以与存储在磁盘上相同的方式表示它们在内存中处理的数据。内存中的数据被组织起来以方便处理,磁盘上的数据(文件)针对互操作性、存储大小或其他原因进行了优化;在加载或写入文件时,它们会从一种形式转换为另一种形式。即使它们很相似,也可能另一种方式:文件只是写入磁盘的内存内容,不可读。


本书网站Mac OS X 内部原理 提供有关如何转储正在运行的进程核心的描述和程序,即将与特定进程相关的主内存写入磁盘。

如果您想使用 Apple 的开发工具在 OS X Lion 上进行编译,请从中删除-arch <name>参数。gccMakefile

然后您可以运行sudo ./gcore <pid><pid>如下所示活动监视器. 打开生成的转储文件(例如,在十六进制编辑器中)进行查看。在我的系统上,一个相当简单的过程,例如计算器生成大小约为 450MB 的文件。

相关内容