# Mac 的 /private/var/db/diagnostics 越涨越大，怎么查出是哪个进程在刷日志？

**URL:** <https://www.shiqidu.com/t/topic/1866>\
**Category:** 问题求助\
**Tags:** 问与答, macOS, Mac软件\
**Created:** [2026 年10 月 30 日 13:23 UTC](https://www.shiqidu.com/t/topic/1866 "2026-10-30T13:23:01Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

作者： ![shiqidu\_editor](https://www.shiqidu.com/user_avatar/www.shiqidu.com/shiqidu_editor/32/528_2.png) [@shiqidu\_editor](https://www.shiqidu.com/u/shiqidu_editor)\
发布日期： [2026 年10 月 30 日 13:23 UTC](https://www.shiqidu.com/t/topic/1866/1 "2026-10-30T13:23:01Z")

</div>

前阵子聊过 [ToDesk 往 dumps 里不停写崩溃转储](https://www.shiqidu.com/t/topic/1836)的事，那回占空间的是第三方软件自己的文件夹，找到它处理掉就完了。/private/var/db/diagnostics 不一样，它归 macOS 自己管，放的是统一日志系统（unified logging）的数据。它涨上去以后，该找的是谁在往系统日志里写这么多，而不是去删这个目录。

## 这个目录里是什么

Apple 在 WWDC 2016 的 Session 721（Unified Logging and Activity Tracing）[幻灯片](https://devstreaming-cdn.apple.com/videos/wwdc/2016/721wh2etddp4ghxhpcg/721/721_unified_logging_and_activity_tracing.pdf)里讲过：日志以压缩的二进制格式存成 .tracev3 文件，放在 /var/db/diagnostics/ 下，配套数据在 /var/db/uuidtext。因为格式不是文本，必须用专门的工具读。Apple 资料里写的是 /var 开头的路径，一般就是你在 /private/var 下看到的这个目录。开发者文档 [Viewing Log Messages](https://developer.apple.com/documentation/os/viewing-log-messages) 也是一个意思：读日志要用“控制台”App 或 `log` 命令行工具，文件本身没法直接解析。

空间怎么回收，开发者文档 [Generating Log Messages from Your Code](https://developer.apple.com/documentation/os/generating-log-messages-from-your-code) 有一段说明：debug 和 info 级别默认只放在内存里；notice（也就是 default）、error、fault 会压缩后写进磁盘，表里写的是 “Yes, up to a storage limit”。数据存储超过预设大小时，系统会清掉旧条目给新消息腾地方。这个上限具体是多少，文档没写。所以目录一直明显在涨的话，比较可疑的是有进程在高频写 default 及以上的日志，或者某个子系统的级别被人调高了。

## 看实时是谁在刷

最直接的是 `log stream`，它把实时日志打到终端。刷屏的通常很好认，同一个进程名会接连占满好几屏。想盯某段文字，可以用 WWDC 幻灯片里的写法加过滤：

```auto
log stream
log stream --predicate 'eventMessage contains "my message"'

```

把 my message 换成你在刷屏内容里看到的关键字。知道是哪个组件的话，它的记录一般带 subsystem，可以照 Apple 支持文档 [View content caching logs](https://support.apple.com/en-ca/guide/mac-help/mchl0d8533cd/10.14/mac/10.14) 里的示例，按子系统去查已存下的日志：

```auto
log show --predicate 'subsystem == "com.apple.AssetCache"'

```

这是 Apple 讲内容缓存日志时给的例子，把子系统名换成你要查的就行。时间范围之类的参数，那页也是让大家去看 log(1) man page，在终端里 `man log` 就能看到本机版本对应的说明。

不想敲命令，[控制台 App](https://support.apple.com/guide/console/log-messages-cnsl1012/mac) 也能做到：左边选这台 Mac，点工具栏的 Start（中文界面的按钮名以系统为准），日志就开始滚动。Type 一栏红点是 fault，黄点表示 error，不带圆点的属于 default。用普通账户登录的话，要输入管理员名称和密码才能看。

## 有没有谁把日志级别调高了

调试时可能有人，或者装过的哪款软件，给某个子系统开了 debug 级别。Apple 文档 [Customizing Logging Behavior While Debugging](https://developer.apple.com/documentation/os/customizing-logging-behavior-while-debugging) 给的查看方式是：

```auto
sudo log config --status --subsystem com.your_company.your_subsystem_name

```

同一页还写了，日志配置描述文件可以放在 /Library/Preferences/Logging/Subsystems/ 下，用反向域名命名的 .plist，里面的 `Persist` 键决定消息是只留在内存，还是存进数据存储。去这个目录看一眼有没有陌生的文件：调试时自己放的，用完移走；来路不明的，先弄清是哪个软件装进来的，再去它的设置或卸载流程里处理。

## 找到以后

找到刷日志的进程，退出它，或者更新、卸载，然后观察一两天，看目录还涨不涨。有用户怀疑过某款清理工具被系统沙盒反复拒绝、不停记日志，可也有没装它的人目录照样不小，所以别急着给哪个软件定罪，以 `log stream` 里实际看到的为准。

至于手动删：Apple 现有资料只说了系统会在超出预设大小时清理旧消息，没看到哪份文档建议用户自己删这个目录，删了以后对诊断有什么影响也没有官方说明。空间真的紧张，更稳的是把源头停掉，让系统自己回收。

你们机器上这个目录一般多大？有没有抓到过哪个进程在疯狂写日志？
