Intel Mac终端下将CPU温度写入文件的正确方法咨询
Intel Mac终端下将CPU温度写入文件的正确方法咨询
我来帮你搞定这个问题!你是不是纳闷明明终端里能正常看到CPU温度输出,可就是写不到文件里?其实问题出在powermetrics这个命令的输出流上——它默认把温度信息输出到标准错误流(stderr),而我们常用的管道|和重定向>>默认只处理标准输出流(stdout),所以温度内容根本没被捕获到文件里~
下面给你修正后的几种正确写法:
1. 单次捕获CPU温度并追加到文件
把标准错误流的内容合并到标准输出流,让grep能捕获到内容,再重定向到文件:
sudo powermetrics --samplers smc 2>&1 | grep -i "CPU die temperature" >> cpu_temps.txt
这里的2>&1是关键,它的作用是将编号为2的错误流,重定向到编号为1的标准输出流里,这样后续的管道和重定向就能处理到温度信息了。
2. 持续循环记录CPU温度
如果你需要每隔1秒记录一次温度,修正后的循环脚本如下:
while true do sudo powermetrics --samplers smc 2>&1 | grep -i "CPU die temperature" >> cpu_temps.txt sleep 1 done
执行后会一直后台记录温度,按Ctrl+C可以停止。
3. 用tee命令追加到指定路径的文件
如果你需要写入到特定用户目录的文件,比如你之前的/Users/my_mac/temp_log.txt,修正命令如下:
sudo powermetrics --samplers smc 2>&1 | grep -i "CPU die temperature" | sudo tee -a /Users/my_mac/temp_log.txt >/dev/null
tee -a的作用是追加内容到指定文件,最后的>/dev/null是用来屏蔽tee本身的输出,避免终端重复显示内容。
你可以执行完命令后,用cat cpu_temps.txt(或对应文件路径)查看,就能看到和终端直接输出一致的温度记录啦~
备注:内容来源于stack exchange,提问作者VikR




