4

Хотите очистить /private/var/folders/* при загрузке OS X, создав запись launchd . (AFAIK, OS X не поддерживает rc.conf rc.d - все должно быть сделано путем создания записи для launchd)

Вот похожий вопрос. К сожалению, принятый ответ неверен, потому что здесь есть демоны (особенно демоны, которые зависят от вызова mktemp ), которые могут работать и все еще открывают файлы - так что вы не можете удалить что-либо в /private/var/folders/* . (Чтобы быть правильным, предложенная "перезагрузка после" несколько решает проблему - но не полностью.)

Итак, вопрос: безопасно ли удалять файлы в /private/var/folders/* во время загрузки?

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

  • Или единственный безопасный способ - удалить файлы старше X дней?
  • Или другая идея для безопасной, но автоматической очистки временных файлов / каталогов в /private/var/folders/* потому что она продолжает расти и расти ... ;(

2 ответа2

4

Папки TL; DR: /var/folders содержат папки для пользовательских кэшей и временные файлы. Вы можете получить доступ к своим собственным папкам, но не к папкам других пользователей. Удаление файлов, которые в данный момент не используются, должно быть безопасным, но удаление файлов, которые используются, вероятно, вызовет проблемы. Если вы хотите очистить их, вам следует перезагрузить компьютер, чтобы свести к минимуму вероятность возникновения проблем.

Если вы ничего не сделаете, системные процессы будут периодически очищать эти папки от файлов, к которым не было доступа в течение трех дней, поэтому вам не нужно ничего делать, если у вас не хватает памяти.

Детали

/var/folders основном содержат временные файлы и файлы кэша, которые хранятся для каждого пользователя. Если вы посмотрите на корень /var/folders , вы не увидите много:

$ ls -l /var/folders
total 0
drwxr-xr-x   3 root  wheel   102 Mar  2  2014 43/
drwxr-xr-x   3 root  wheel   102 Mar  2  2014 4c/
drwxr-xr-x   3 root  wheel   102 Mar  2  2014 c3/
...

Но если вы посмотрите на один уровень ниже, вы увидите, что они содержат папки для каждого пользователя. Как правило, каждая папка верхнего уровня (двухбуквенная) содержит одну папку пользователя, но папка zz содержит много системных пользователей. Например (имена пользователей изменены в целях конфиденциальности):

$ ls -l /var/folders/*
/var/folders/43:
total 0
drwxr-xr-x  6 user1  staff  204 Oct  3  2016 3lsw0k6d7vqbywvsf226nkqc0000gs/

/var/folders/4c:
total 0
drwxr-xr-x  6 user2  staff  204 Jul 15  2016 yc9pgt3j5y18vr29jcgbbyb4000101/

/var/folders/c3:
total 0
drwxr-xr-x  6 user3  staff  204 Aug 16  2016 wv6q5xlx1flgtwcs0rjlkbd4000102/

/var/folders/rp:
total 0
drwxr-xr-x  4 admin  staff  136 Jul  3  2016 qjg8tsk964scvw2510_n6yz00000gt/

/var/folders/yx:
total 0
drwxr-xr-x  4 macports  macports  136 Jul  3  2016 m3d21nm91wnd4c0k2yjk57200000gn/

/var/folders/zz:
total 0
drwxr-xr-x  6 root       wheel      204 Jul  3  2016 zyxvpxvq6csfxvn_n0000000000000/
drwxr-xr-x  3 _networkd  _networkd  102 Jul  3  2016 zyxvpxvq6csfxvn_n000003000000r/
drwxr-xr-x  3 _lp        _lp        102 Jul  3  2016 zyxvpxvq6csfxvn_n000003800000t/
...

В каждом из них вы найдете несколько волшебных папок:

$ ls -l /var/folders/4c/yc9pgt3j5y18vr29jcgbbyb4000101/
total 0
drwxr-xr-x   6 user2  staff   204 Sep  1 10:31 0/
drwx------  53 user2  staff  1802 Jul 28 18:44 C/
drwxr-xr-x   2 user2  staff    68 Jul  3  2016 Cleanup At Startup/
drwx------  83 user2  staff  2822 Sep  1 10:53 T/

Папка « C » - это кэши пользователя, содержащие то, что (до MacOS X 10.5) было бы в /Library/Caches . Папка « T » - это временные файлы этого пользователя - вместо /tmp или, может быть, /var/tmp .

Я не уверен насчет двух других папок. Cleanup At Startup пуста. Я подозреваю, что его целью является хранение файлов, которые необходимы до момента перезагрузки, но должны быть удалены впоследствии (например, временные файлы, используемые системными программами обновления), и, следовательно, будут удалены после перезагрузки (или, возможно, даже выхода из системы / входа в систему). ).

Папка « 0 » содержит несколько связанных с рабочим столом баз данных и, вероятно, предназначена для использования в качестве кеша для этих сервисов:

$ ls -l /var/folders/4c/yc9pgt3j5y18vr29jcgbbyb4000101/0
total 14104
-rw-------  1 user2  staff  7221248 Sep  1 10:31 com.apple.LaunchServices-1341025.csstore
drwx------  3 user2  staff      102 Jul  3  2016 com.apple.dock.launchpad/
drwx------  3 user2  staff      102 Jul  3  2016 com.apple.notificationcenter/
drwx------  3 user2  staff      102 Sep  1 10:05 com.apple.pluginkit/

Итак, подведем итог: каждый пользователь и виртуальный пользователь имеет свой собственный каталог в /var/folders . У вас будет доступ к вашим собственным, но не к другим пользователям (если вы не используете sudo для доступа к ним как root). В основном они содержат кеши и временные файлы. Таким образом, удаление содержимого может быть или не быть безопасным, в зависимости от того, используются ли файлы или нет.

Удаление файлов, в которых соответствующий процесс все еще выполняется, может привести к неправильной работе или падению этого процесса. Удаление файлов, в которых соответствующий процесс не запущен, должно быть безопасным, но может привести к проблемам с производительностью при повторном запуске процесса (так как он, скорее всего, заново сгенерирует свои кеши и временные файлы).

Похоже, что в 3:35 утра каждую ночь запускается фоновый процесс для очистки этих папок. Я не знаю специфики очистки (она не очень хорошо документирована), но то, что я прочитал, указывает на то, что она удалит любой файл, к которому не было доступа в течение трех дней.

2

Обычно /var/folders должны быть должным образом очищены и регулируются системой при необходимости. Удаление некоторых вещей оттуда, не зная, что удалено, может привести к неожиданным и крайне нежелательным результатам.

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

Я думаю, что было бы хорошо узнать, как OS X очищает эту папку и как вызывать ее вручную, так что это было бы лучшим решением.

Смотрите также:

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