8.7 KiB
8.7 KiB
name, description, triggers, owner, group, version, updated
| name | description | triggers | owner | group | version | updated |
|---|---|---|---|---|---|---|
| 系统监控 | CPU/内存/磁盘实时监控与进程管理 | 系统状态、CPU占用、内存使用、杀进程、端口占用 | 金仓 | 金 | 1.0 | 2026-02-16 |
系统监控
监控和诊断卡若 MacBook Pro (Apple Silicon) 的系统状态。
快速诊断流程
┌──────────────────────────────────────────────────────────────┐
│ 系统诊断工作流 │
├──────────────────────────────────────────────────────────────┤
│ 1. 系统概览 2. 定位问题 3. 处理 4. 验证 │
│ │ │ │ │ │
│ ▼ ▼ ▼ ▼ │
│ top/htop ps aux排序 kill/重启 再次检查 │
│ memory_pressure lsof端口 │
└──────────────────────────────────────────────────────────────┘
1. 系统概览
快速状态检查
# CPU和内存快照
top -l 1 | head -12
# 内存压力(最重要指标)
memory_pressure
# 磁盘使用
df -h /System/Volumes/Data
# 系统运行时间
uptime
详细资源监控
# 交互式监控(推荐 htop)
htop # brew install htop
# 或使用原生 top
top -o cpu # 按 CPU 排序
top -o mem # 按内存排序
# 内存详情
vm_stat | perl -ne '/page size of (\d+)/ and $size=$1; /Pages\s+(\w+)[:\s]+(\d+)/ and printf("%-16s % 8.2f MB\n", "$1:", $2 * $size / 1048576);'
2. 进程监控
CPU 和内存 TOP10
# CPU 占用 TOP10
ps aux | sort -nrk 3 | head -10
# 内存占用 TOP10
ps aux | sort -nrk 4 | head -10
# 格式化输出
ps aux --sort=-%cpu | awk 'NR<=11 {printf "%-10s %-6s %-6s %s\n", $1, $3"%", $4"%", $11}'
查找特定进程
# 按名称查找
ps aux | grep -i <进程名>
# 查看进程树
pstree -p <PID>
# 查看进程详情
ps -p <PID> -o pid,ppid,user,%cpu,%mem,start,time,command
3. 端口管理
查看端口占用
# 查看指定端口
lsof -i :<端口号>
# 常用开发端口
lsof -i :3000 # React/Next.js
lsof -i :5173 # Vite
lsof -i :8080 # 通用后端
lsof -i :8000 # Django
lsof -i :4000 # Phoenix
lsof -i :27017 # MongoDB
lsof -i :3306 # MySQL
lsof -i :6379 # Redis
lsof -i :5432 # PostgreSQL
# 查看所有监听端口
netstat -an | grep LISTEN
# 或
lsof -iTCP -sTCP:LISTEN -n -P
杀死占用端口的进程
# 方法1:直接杀死
kill $(lsof -t -i:<端口号>)
# 方法2:强制杀死
kill -9 $(lsof -t -i:<端口号>)
# 方法3:查看后再杀
lsof -i :3000 # 先查看 PID
kill -9 <PID>
4. 进程管理
结束进程
# 温柔关闭(发送 SIGTERM)
kill <PID>
# 强制终止(发送 SIGKILL)
kill -9 <PID>
# 按名称杀死
pkill -f <进程名>
# 杀死所有同名进程
killall <进程名>
批量清理
# 杀死所有 node 进程
pkill -f node
# 杀死所有 python 进程
pkill -f python
# 杀死所有僵尸进程
ps aux | grep 'Z' | awk '{print $2}' | xargs kill -9 2>/dev/null
5. 常用服务重启
系统服务
# Finder(文件管理器卡住)
killall Finder
# Dock(任务栏卡住)
killall Dock
# 菜单栏(状态栏图标异常)
killall SystemUIServer
# 控制中心
killall ControlCenter
# Spotlight(搜索异常)
sudo mdutil -E /
iCloud 服务
# 重启 iCloud 同步
killall bird && killall cloudd
# 强制刷新
defaults write com.apple.bird DisableUpload -bool false
killall bird cloudd
开发服务
# 重启 Docker Desktop
osascript -e 'quit app "Docker"'
sleep 2
open -a Docker
# 重启 MongoDB
brew services restart mongodb-community
# 重启 MySQL
brew services restart mysql
# 重启 Redis
brew services restart redis
6. Docker 管理
状态检查
# 容器状态
docker ps -a
# 磁盘占用
docker system df
# 镜像列表
docker images
清理
# 清理停止的容器
docker container prune -f
# 清理无用镜像
docker image prune -a -f
# 清理所有(慎用)
docker system prune -a --volumes -f
# 清理构建缓存
docker builder prune -a -f
7. 网络诊断
基础检查
# 网络质量测试
networkQuality
# DNS 查询
nslookup <域名>
dig <域名>
# 路由追踪
traceroute <域名>
# 网络接口信息
ifconfig en0
连接测试
# 测试端口连通性
nc -zv <IP> <端口>
# HTTP 请求测试
curl -I https://www.baidu.com
# 查看外网 IP
curl ip.sb
DNS 刷新
# 刷新 DNS 缓存
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder
echo "DNS 缓存已刷新"
Cursor 上传占用降低
已在 ~/Library/Application Support/Cursor/User/settings.json 中建议或已配置:
"redhat.telemetry.enabled": false— 关闭 Red Hat 扩展遥测上传"telemetry.telemetryLevel": "off"— 关闭 IDE 遥测"cursor.general.enableCodebaseIndexing": false— 关闭代码库索引(避免整库分块上传)
需在 Cursor 内手动操作(进一步降上传):
- 开启 Privacy Mode:
Cursor→Settings→General→ 打开 Privacy Mode(代码不存 Cursor/第三方,部分 AI 能力会受限) - 少 @ 大文件:对话里少引用整文件,只 @ 必要片段,可明显减少单次请求上传量
- 不用时关扩展:禁用暂时不用的扩展,减少后台同步与遥测
8. 性能基准
正常指标
| 指标 | 正常 | 警告 | 危险 |
|---|---|---|---|
| CPU | <50% | 50-80% | >80%持续 |
| 内存压力 | 正常(normal) | 警告(warn) | 严重(critical) |
| 磁盘可用 | >100GB | 50-100GB | <50GB |
| 交换内存 | <2GB | 2-8GB | >8GB |
性能测试
# CPU 压力测试
yes > /dev/null & # 创建负载
# 按 Ctrl+C 停止,然后 kill %1
# 内存测试
memory_pressure
# 磁盘 I/O 测试
dd if=/dev/zero of=/tmp/testfile bs=1m count=1024
rm /tmp/testfile
9. 一键诊断脚本
#!/bin/bash
# 系统快速诊断
echo "=========================================="
echo "🖥️ 系统诊断报告 - $(date)"
echo "=========================================="
echo ""
# 1. 系统信息
echo "📊 系统信息"
echo "-------------------------------------------"
sw_vers
echo ""
# 2. 运行时间和负载
echo "⏱️ 运行时间和负载"
echo "-------------------------------------------"
uptime
echo ""
# 3. 内存压力
echo "🧠 内存压力"
echo "-------------------------------------------"
memory_pressure
echo ""
# 4. 磁盘空间
echo "💾 磁盘空间"
echo "-------------------------------------------"
df -h /System/Volumes/Data
echo ""
# 5. CPU TOP5
echo "🔥 CPU 占用 TOP5"
echo "-------------------------------------------"
ps aux | sort -nrk 3 | head -6 | awk '{printf "%-10s %6s%% %s\n", $1, $3, $11}'
echo ""
# 6. 内存 TOP5
echo "📦 内存占用 TOP5"
echo "-------------------------------------------"
ps aux | sort -nrk 4 | head -6 | awk '{printf "%-10s %6s%% %s\n", $1, $4, $11}'
echo ""
# 7. 监听端口
echo "🌐 监听端口"
echo "-------------------------------------------"
lsof -iTCP -sTCP:LISTEN -n -P | awk 'NR>1 {print $1, $9}' | sort -u | head -10
echo ""
echo "=========================================="
echo "✅ 诊断完成"
echo "=========================================="
10. 常见问题处理
| 问题 | 快速解决 |
|---|---|
| 电脑很卡 | memory_pressure 检查内存,关闭高占用应用 |
| 端口被占用 | lsof -i :端口号 查看,kill -9 杀死 |
| Finder 无响应 | killall Finder |
| Docker 异常 | 重启 Docker Desktop 或 docker system prune |
| 网络异常 | 刷新 DNS:sudo dscacheutil -flushcache |
| Cursor 上传大 | 关遥测/关代码库索引见上文「Cursor 上传占用降低」;可开 Privacy Mode |
| iCloud 不同步 | killall bird && killall cloudd |
| Spotlight 搜索慢 | sudo mdutil -E / 重建索引 |
推荐工具
| 工具 | 说明 | 安装 |
|---|---|---|
| htop | 交互式进程监控 | brew install htop |
| btop | 更漂亮的系统监控 | brew install btop |
| ncdu | 交互式磁盘分析 | brew install ncdu |
| duf | 现代化 df | brew install duf |
| bandwhich | 网络带宽监控 | brew install bandwhich |