macOS原生不支持AppleScript直接读取CPU温度,必须依赖istats等第三方工具采集数据后调用解析;示例脚本每30秒检测温度,超85°C弹窗警告并记录日志,支持Apple Silicon,需通过Homebrew安装istats并配置登录项实现后台运行。

macOS 本身不直接提供 CPU 温度读取的系统接口,AppleScript 无法单独获取温度数据——它需要依赖第三方命令行工具(如 smcFanControl、istats 或 osx-cpu-temp)来采集硬件传感器数据,再用 AppleScript 调用并做逻辑判断与提醒。
安装温度读取工具(以 istats 为例)
istats 是较活跃、支持新老 Mac(含 Apple Silicon)的开源工具,通过 Homebrew 安装:
- 先安装 Homebrew(若未安装):
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" - 再安装 istats:
brew install istats - 首次运行需授权:终端执行
istats,按提示输入密码并允许辅助功能权限
编写 AppleScript 监控主体
以下脚本每 30 秒检查一次 CPU 温度,超过 85°C 弹窗提醒,并记录日志:
使用 inotes CLI 从终端管理 Apple Notes。当需要在 macOS 的 Notes.app 中列出、读取、创建、编辑、删除或搜索备忘录时使用。
repeat
-- 调用 istats 获取 CPU 温度(单位:°C),提取数值部分
set tempLine to do shell script "istats cpu | grep 'CPU' | awk '{print $2}' | tr -d '°C'"
try
set cpuTemp to tempLine as number
on error
set cpuTemp to 0
end try
<pre class="brush:php;toolbar:false;">if cpuTemp ≥ 85 then
display alert "⚠️ CPU 过热警告" message ("当前温度:" & cpuTemp & "°C") as critical
-- 可选:同时写入日志
do shell script "echo \"$(date): CPU " & cpuTemp & "°C\" >> ~/Desktop/cpu_alert_log.txt"
end if
delay 30end repeat
说明:
• 使用 grep 和 awk 提取 istats cpu 输出中的温度数值
• tr -d '°C' 去掉单位符号,确保能转为数字
• display alert ... as critical 显示红色高亮警告框
• 日志保存在桌面,便于后续排查
让脚本后台持续运行
AppleScript 不能直接作为守护进程,推荐两种轻量方式:
- 保存为应用 + 登录项:在 Script Editor 中“文件 → 导出”,格式选“应用程序”,勾选“运行前显示启动项”,然后将该 App 拖入“系统设置 → 登录项”中
-
配合 launchd(更稳定):编写 plist 文件放在
~/Library/LaunchAgents/下,实现开机自启、崩溃重启;但需额外学习 launchd 语法,适合进阶用户
注意事项与替代方案
• Apple Silicon Mac(M1/M2/M3)的传感器支持依赖于 istats 的更新版本(v2.0+),旧版可能返回空值
• 若提示 “command not found: istats”,需确认 shell 环境变量是否包含 Homebrew 的 bin 路径(/opt/homebrew/bin 或 /usr/local/bin);可在 AppleScript 中改用完整路径:/opt/homebrew/bin/istats cpu ...
• 不想装第三方?可尝试 powermetrics(系统内置但需 root 权限且输出复杂),或使用 Swift/Python 编写更健壮的监控程序,AppleScript 仅适合简单触发场景










