用 log show 配合 --predicate 可精准查询 macos 统一日志中指定进程的行为,支持按进程名、子系统、日志级别和关键词筛选,并可分页或导出分析。
想看某个进程在 macos 里干了什么,用 log show 配合 --predicate 精准锁定就行。它查的是系统统一日志(unified logging),不是临时内存或旧式文本日志,所以记录完整、时间准确、字段结构化。
按进程名直接抓取全部日志
只要知道进程的可执行文件名(比如 Safari、WeChat、Terminal),就能筛出它产生的所有日志条目:
-
log show --predicate 'process == "Safari"' --last 2h:查 Safari 近两小时的所有日志 -
log show --predicate 'process == "kernel"' --last 1h:查内核进程行为,适合排查底层异常 - 注意:进程名必须完全匹配,区分大小写,且不带路径(如用
"Terminal",不是/Applications/Utilities/Terminal.app/Contents/MacOS/Terminal)
结合子系统和日志级别缩小范围
单靠进程名可能混入大量低价值信息(比如大量 info 级调试输出)。加 --info 或 --debug 可控制最低日志等级,再配合 subsystem 能进一步聚焦:
部署和使用军舰的 macOS Automator 自动化服务集合。包含 5 个实用工作流:PDF转JPG、PNG重命名并转JPG、图像拼接、解压RAR、顺序命名图像文件。一键安装所有服务到 ~/Library/Services/ 目录。使用场景:(1) "安装我的自动化服务",(2) "部署所有 Automato...
-
log show --predicate 'process == "Safari" AND subsystem == "com.apple.WebKit"' --info --last 30m:只看 Safari 在 WebKit 子系统中 info 级及以上的动作 -
log show --predicate 'process == "sshd" AND level == "error"' --last 1d:专查 sshd 的错误级日志,适合安全审计 - 常用子系统可先试跑:
log show --last 1m | grep -o '"subsystem":"[^"]*"' | sort -u | head -10,快速列出近期活跃的 subsystem
用关键词辅助定位具体行为
进程日志里常含操作动词或状态描述,加关键词能快速识别关键事件:
-
log show --predicate 'process == "Finder" AND eventMessage contains "mounted"' --last 6h:查 Finder 挂载磁盘的动作 -
log show --predicate 'process == "backupd" AND (eventMessage contains "completed" OR eventMessage contains "failed")' --last 24h:看 Time Machine 备份是否成功 - 用
contains[c]实现忽略大小写的匹配,比如'eventMessage contains[c] "auth"
导出和分页查看长日志流
如果结果太多,直接刷屏难读,两种实用方式:
- 分页浏览:
log show --predicate 'process == "Xcode"' --last 12h | less,空格翻页,q 退出 - 导出到文件:
log show --predicate 'process == "Xcode"' --last 7d > ~/Desktop/xcode_activity.log,方便后续用编辑器或脚本分析 - 加
--style syslog输出传统格式,对习惯 old-school 日志格式的人更友好










