macOS 的 log show 不直接记录用户行为,但可通过 com.apple.loginwindow 等子系统日志结合 UID、进程名等字段间接还原操作痕迹,如登录、应用启动、权限请求等。
macos 的 log show 本身不直接记录“用户行为”(如点击、打开文件、切换应用),它记录的是系统和服务产生的事件日志,但可通过关联进程、子系统与用户上下文间接还原用户操作痕迹。关键在于识别哪些日志源会反映用户级动作,并结合 uid、audit token 或进程归属进行筛选。
识别能反映用户行为的日志来源
以下子系统和进程在用户交互时会生成可追踪日志:
- com.apple.loginwindow:记录登录、注销、屏幕锁定/解锁事件,含用户名和会话 ID
- com.apple.securityd:权限请求(如访问钥匙串、摄像头)、授权决策,常带当前用户 UID
- com.apple.accounts:iCloud、邮件账户同步状态变更,可关联用户邮箱或 Apple ID
- com.apple.finder 或 com.apple.LaunchServices:应用启动、文件打开(部分场景下会记录路径或 UTI 类型)
- com.apple.WindowServer:图形会话活动,如前台应用切换、窗口聚焦变化(需开启调试日志才较详细)
按用户身份(UID)过滤日志
统一日志中多数条目包含 uid 字段,可用谓词精确匹配某用户(例如 UID 501 通常是首个标准用户):
部署和使用军舰的 macOS Automator 自动化服务集合。包含 5 个实用工作流:PDF转JPG、PNG重命名并转JPG、图像拼接、解压RAR、顺序命名图像文件。一键安装所有服务到 ~/Library/Services/ 目录。使用场景:(1) "安装我的自动化服务",(2) "部署所有 Automato...
- 查看 UID 501 近 1 小时内所有日志:
log show --predicate 'uid == 501' --last 1h - 只看该用户触发的权限请求:
log show --predicate 'uid == 501 AND subsystem == "com.apple.securityd" AND eventMessage contains "granted" OR eventMessage contains "denied"' --last 24h - 查找其登录/注销记录:
log show --predicate 'subsystem == "com.apple.loginwindow" AND (eventMessage contains "logged in" OR eventMessage contains "logged out") AND uid == 501'
通过进程名+用户上下文定位操作
很多用户行为由前台应用发起,日志中会同时标注 process 和 uid,组合筛选更可靠:
- 查看 Safari 启动及页面加载(UID 501):
log show --predicate 'process == "Safari" AND uid == 501 AND eventMessage contains "didFinishLoading"' --last 6h - 定位 Finder 中复制/移动文件行为(需配合
com.apple.LaunchServices或com.apple.dock):log show --predicate 'subsystem == "com.apple.LaunchServices" AND uid == 501 AND (eventMessage contains "copy" OR eventMessage contains "move")' --last 1h - 检查是否调用过截图快捷键(触发
ScreenCapture进程):log show --predicate 'process == "ScreenCapture" AND uid == 501' --last 3h
导出并人工比对时间线
用户行为往往跨多个进程,建议导出一段时间内的结构化日志,再按时间排序梳理:
- 导出 UID 501 过去 2 小时所有相关日志(含 loginwindow、securityd、LaunchServices):
log show --predicate '(subsystem == "com.apple.loginwindow" OR subsystem == "com.apple.securityd" OR subsystem == "com.apple.LaunchServices") AND uid == 501' --last 2h --style syslog > ~/Desktop/user_activity.log - 用文本编辑器打开该文件,按时间戳(首列)排序,观察事件链:登录 → 启动应用 → 请求权限 → 打开文件 → 退出
- 注意同一秒内多个进程日志可能属于同一次用户操作(例如点击 Dock 图标会同时触发 LaunchServices 和 Dock 日志)

















