应优先用sudo iotop实时监控并按write列降序定位最高写入进程;若未安装则用sudo pidstat -d -l 1 5 | sort -k7,7nr | head -n6抓取top5;需查特定文件读写时用sudo lsof -n -p | awk '$4~/[0-9]+[uw]/&&$5=="reg"{print $1,$2,$4}'|sort|uniq-c|sort-nr|head-10。

当你发现MacBook硬盘指示灯狂闪、风扇持续高转、系统响应变慢,说明有程序正在高强度读写磁盘,必须快速定位到具体进程——终端命令能绕过图形界面干扰,直接获取原始IO数据,比活动监视器更底层、更可信。
用iotop实时监控磁盘IO(推荐首选)
macOS原生不带iotop,但可通过Homebrew安装功能等效的iotop替代工具,它以top风格动态刷新,每秒更新一次读写速率,一眼锁定最活跃进程。
打开终端,执行:brew install iotop;若未安装Homebrew,先运行/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"。
安装完成后直接输入sudo iotop,需输入管理员密码;此时界面会实时滚动显示所有进程的READ和WRITE速率,【按WRITE列降序排列后顶部进程即当前写入最猛的程序】。
按q退出;注意:不要在iotop运行中关闭终端窗口,否则可能残留后台监控任务。
用pidstat精准抓取TOP 5磁盘活跃进程
如果已安装sysstat套件(含pidstat),它比iotop更轻量,且支持历史快照分析。适用于想对比“此刻vs一小时前”IO变化的场景。
第一步:确认是否已安装——终端输入pidstat -d 1 3;若提示command not found,则跳过此方法,改用下述lsof组合方案。
第二步:如命令可用,执行sudo pidstat -d -l 1 5 | sort -k7,7nr | head -n6;该命令采集5秒内每秒IO数据,按“kB_wr/s”列倒序排,输出前5个真实进程+表头。
第三步:观察输出中COMMAND列是否包含可疑路径,例如/Users/xxx/Downloads/utorrent或/Library/Application Support/Adobe/ARM,这类路径往往对应静默上传或自动更新行为。
用lsof + awk组合命令筛出高频读写文件的进程
当你要的不是“哪个进程IO高”,而是“哪个进程正在反复读写某个特定类型文件(比如日志、缓存、数据库)”,这个组合命令直击本质。
方法一:查所有正在写入普通文件(REG类型)的进程,按写入次数排序:
sudo lsof -n -P | awk '$4 ~ /[0-9]+[uw]/ && $5 == "REG" {print $1,$2,$4}' | sort | uniq -c | sort -nr | head -10
其中$4 ~ /[0-9]+[uw]/匹配文件描述符含写权限(w)或读写权限(uw)的行,【漏掉这一正则将完全无法识别写入行为】。
方法二:快速定位最近10秒内写入量突增的进程(需配合iostat预判):
先运行iostat -d 1 3看整体磁盘写入速率是否超2MB/s;若是,立即执行:sudo lsof -p $(ps -eo pid,wkb|sort -nk2|tail -1|awk '{print $1}') 2>/dev/null | grep REG。











