重新启动时删除 OSX 的 /private/var/folders/* 是否安全?

jm6*_*666 6 boot launchd temporary-files macos

想要/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/*因为它不断增长......;(

Dav*_* C. 5

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/
...
Run Code Online (Sandbox Code Playgroud)

但如果您向下看一层,您会发现其中包含每个用户的文件夹。通常,每个顶级(两个字符)文件夹包含一个用户文件夹,但“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/
...
Run Code Online (Sandbox Code Playgroud)

在每一个文件夹中,您都会发现一些神奇的文件夹:

$ 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/
Run Code Online (Sandbox Code Playgroud)

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/
Run Code Online (Sandbox Code Playgroud)

因此,总而言之,每个用户和虚拟用户在/var/folders. 您将可以访问您自己的用户,但不能访问其他用户(除非您以sudoroot 身份访问它们)。它们主要包含缓存和临时文件。因此,删除内容可能安全也可能不安全,具体取决于文件是否正在使用。

删除相应进程仍在运行的文件可能会导致该进程行为异常或崩溃。删除相应进程未运行的文件应该是安全的,但在进程重新启动时可能会导致性能问题(因为它可能会重新生成缓存和临时文件。)

似乎每晚凌晨 3:35 都会运行一个后台进程来清理这些文件夹。我不知道清理的具体性质(似乎没有详细记录),但我读到的内容似乎表明它将删除三天未访问的任何文件。


ken*_*orb 3

必要时通常/var/folders应由系统进行适当的净化和调节。在不知道删除了什么的情况下从那里删除一些东西可能会导致一些意想不到的和非常不希望的结果。

如果您正在谈论在重新启动时手动清理此文件夹,我认为它应该是安全的,因为它不太可能被某些正在运行的程序使用(只是上次的一些残留物)。不过,您是对的,为了以防万一,删除 1 天前的文件总是更安全。

我认为最好了解 OS X 如何清理该文件夹以及如何手动调用该文件夹,因此这将是一个更好的解决方案。

也可以看看: