/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/*
因为它不断增长……;(
答案1
总结:/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 如何清理该文件夹以及如何手动调用它,这样这将是一个更好的解决方案。
也可以看看:
答案3
不管怎样(意思是自己决定是否值得 :-),在 Catalina (10.15) 上这样做很危险。我在升级到 Catalina 后在 Macbook Air 上这样做了。它不会重新启动,而且从内部屏幕损坏的 Time Machine 恢复非常麻烦。
我的 Macbook Air 屏幕也坏了(键盘和触控板也坏了,不过我跑题了)。我有点偏执,因为我用它做开发。所以我在网上找到了另一个技巧。启动时按住 shift 键可以让 Mac 进入“安全模式”。然后 Mac 启动到安全模式,然后“sudo du -d 1 -h /private”确认有 44GB。再次重启后回到常规 Mac OS X,同样的命令显示有 3GB。
顺便说一句,这款产品不适用于普通键盘,我不得不找一个苹果键盘。
定期这样做虽然麻烦,但更安全。我尝试了免费的清理程序,但没有一个能找到这些文件/文件夹。而且我宁愿不花 30 到 80 美元买一个可能找不到它们的清理程序……