/tmp 多久被删除一次?我以为它是在启动时清除的,如果不重新启动,每三天清除一次,但我找不到任何权威来源。
我正在运行最新的 10.6。(我想我会对以前的操作系统版本中这种行为的变化感兴趣。)
答案1
简短回答:默认情况下,三天内未访问的文件将从 /tmp 中删除
长答案:
MacOS Sonoma 14 对此进行了重大改变
在 Sonoma 之前,它的工作原理如下:
launchd
设置/usr/sbin/periodic daily
为每 86400 秒(1 天)运行一次(定义见/System/Library/LaunchDaemons/com.apple.periodic-daily.plist
)。旧版本的 Mac OS 将其安排在每天凌晨 3:15 运行。/usr/sbin/periodic daily
运行脚本/etc/periodic/daily
,包括110.clean-tmps
。110.clean-tmps
用于find
删除未在 中列出的几天内未访问的文件(使用-atime
和-mtime
参数find
)。$daily_clean_tmps_days
$daily_clean_tmps_ignore
- 这两个变量(以及其他相关变量)在 中定义
/etc/periodic.conf
。(从 OS 10.7 开始,有一个文件/etc/defaults/periodic.conf
定义了默认值,但为了覆盖这些默认值,您仍应创建/etc/periodic.conf
- 请参阅 period.conf(5) 手册页。)如果您尚未修改此文件,则$daily_clean_tmps_days
设置为 3。
periodic daily
将其输出记录到/var/log/daily.out
。从 中删除的文件/tmp
记录在“正在删除旧的临时文件:”标题下。
在 MacOS Sonoma 中,此功能已迁移到更直接的控制方式launchd
- 有一个新的启动守护进程专门用于
/tmp
清理/System/Library/LaunchDaemons/com.apple.tmp_cleaner.plist
- 使用
StartCalendarInterval
,它/usr/libexec/tmp_cleaner
每天 0 点(即午夜)运行 tmp_cleaner
110.clean-tmps
是一个与Sonoma 之前使用的非常相似的 shell 脚本但它没有提供任何简单的方法来覆盖 3 天设置。您必须手动编辑此文件(并在 OS update0 上再次执行此操作