
Хотите очистить /private/var/folders/*
при загрузке OS X,создаваяВход launchd
. (Насколько мне известно, OS X не поддерживает rc.conf
rc.d
- все должно быть сделано путем создания записи для launchd
)
Вотпохожий вопрос. К сожалению, принятый ответ неверен, потому что здесь есть демоны (особенно демоны, которые полагаются на mktemp
вызов), которые могут работать и все еще открывают файлы - так что, выне удалось удалитьв любое время в /private/var/folders/*
. (Если быть точным, предлагаемая «перезагрузка после» в некоторой степени решает проблему, но не полностью.)
Итак, вопрос в том,: безопасно ли удалить файлы в/private/var/folders/*
во время загрузки?
(Я могу себе представить, что какой-нибудь установочный скрипт, требующий перезагрузки (установка .kext или что-то в этом роде), может использовать временные папки для некоторых данных установки после перезагрузки - и не хочу заблокировать свою систему после какой-то критической установки, удалив необходимые файлы :) -это чисто мои домыслы- поэтому и спрашиваю).
- Или единственный безопасный способ — удалить файлы старше X дней?
- Или еще одна идея длябезопасныйноавтоматическийочистка временных файлов/каталогов в,
/private/var/folders/*
потому что они продолжают расти и расти... ;(
решение1
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 очищает эту папку и как вызвать это вручную, так как это было бы лучшим решением.
Смотрите также:
- Что такое «/var/folders»?
- Могу ли я удалить /private/var/folders/bf/?
- Можно ли удалить содержимое /private/var/folders/*?в сообществах поддержки Apple
решение3
Если это того стоит (то есть решайте сами :-), делать это опасно на Catalina (10.15). Я делал это на Macbook Air после обновления до Catalina. Он не перезапускался, и какая боль при восстановлении из Time Machine с плохим внутренним экраном.
У меня также был другой Macbook Air с плохим экраном (и плохая клавиатура, и плохой трекпад, но я отвлекся). Я был параноиком, потому что использую его для разработки. Поэтому вместо этого я нашел в сети другой трюк. Удерживание клавиши shift во время загрузки заставило Mac перейти в «безопасный режим». Затем Mac загрузился в безопасном режиме, и «sudo du -d 1 -h /private» подтвердил 44 ГБ. После еще одной перезагрузки обратно в обычный Mac OS X и той же команды показало 3 ГБ.
Кстати, с обычной клавиатурой это не сработало, пришлось искать клавиатуру Apple.
Гораздо безопаснее, хотя и мучительно, делать это регулярно. Я пробовал бесплатные очистители, но ни один из них не нашел эти файлы/папки. И я бы предпочел не тратить $30 - $80 на очиститель, который, вероятно, тоже их не найдет...