3

Есть некоторые приложения, которые не записывают файлы кеша на диск, вместо этого они записывают в ОЗУ напрямую, и, таким образом, вы не можете создать резервную копию, проанализировать или что-то с этим сделать.

Как я могу получить (то есть сохранить на диск) файлы, которые они кэшируют в оперативной памяти?
Я возьму любой метод: утилита, скрипт, команда терминала ... (я запускаю OS X 10.6.8)

2 ответа2

3

Я не уверен, что вы просите (поскольку программы не нуждаются - и обычно просто не представляют - представляют данные, которые они обрабатывают в памяти, так же, как они хранятся на диске. Данные в памяти организованы так, чтобы облегчить обработку, данные на диске (файлы) оптимизированы для обеспечения совместимости, размера хранилища или по какой-либо другой причине; и они преобразуются из одной формы в другую при загрузке или записи файлов. Даже если они похожи, возможно, все наоборот: файлы - это просто содержимое памяти, записанное на диск, и столь же нечитаемое.


На веб-сайте книги Mac OS X Internals содержится описание и программа о том, как выгрузить ядро запущенных процессов, т.е. записать основную память, связанную с конкретным процессом, на диск.

Если вы хотите скомпилировать его в OS X Lion, используя инструменты разработчика Apple, удалите -arch <name> для gcc из Makefile .

Затем вы можете запустить sudo ./gcore <pid> с <pid> как показано, например, в Activity Monitor. Откройте полученный файл дампа, например, в шестнадцатеричном редакторе, чтобы просмотреть его. В моей системе довольно простой процесс, такой как Calculator, создает файлы размером около 450 МБ.

2

Откройте терминал и введите lsof -n который печатает все открытые файлы. Если они действительно являются файлами кэша, они должны появиться здесь. К сожалению, он отображает все открытые файлы всех процессов. Если вы хотите ограничить вывод теми файлами, которые были открыты соответствующим приложением, найдите идентификатор процесса (PID) работающего приложения и введите, например, lsof -np 1094 если 1094 - это PID.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .