系统诊断
系统诊断用于检查 MSM 自身的配置目录、组件依赖、端口归属、磁盘和权限。它回答的是“MSM 当前运行环境是否健康”,不是通用的公网、DNS 或代理节点测速工具;网络链路问题应继续使用 网络工具。

诊断结果按实际进程标识分组,因此可能显示
mihomo;它对应文档中的 Clash 方案。
截图中的警告来自隔离测试环境:磁盘占用较高,并且同时配置了多个核心的候选端口。它说明“警告”需要展开判断,不表示所有生产安装都会得到相同结果。
在 Web 界面运行
进入 侧边栏 → 系统诊断。页面打开时会读取诊断结果;需要重新采集当前状态时,点击右上角 重新诊断。
总体状态分为:
- 健康:没有影响运行的错误或警告
- 警告:存在缺失的可选项、端口归属无法完整识别或资源接近阈值
- 严重:关键目录、关键端口或权限检查失败
页面同时显示操作系统、架构、Go 版本、CPU 核心数、MSM PID 和是否以 root 运行。诊断接口要求管理员或操作员角色。
当前诊断项目
| 项目 | 实际检查内容 |
|---|---|
| 配置目录 | MSM 配置根目录是否存在、可访问 |
| 配置文件 | configs/app.yaml 是否存在并可读取 |
| 依赖项 | 配置、进程管理目录、二进制目录,以及当前已启用 MosDNS / 代理核心所需的二进制 |
| 端口占用 | 从当前配置动态收集 MSM、MosDNS、Clash、Sing-Box 的 TCP / UDP 端口,并识别实际占用进程 |
| 磁盘空间 | 配置所在文件系统的可用空间和使用率 |
| 权限 | 配置目录和运行环境是否具备所需权限 |
未启用或未选中的组件是可选依赖;它的二进制缺失不会被误报为当前服务故障。展开每个诊断卡片可查看路径、缺失项和其他技术详情。
理解端口详情
端口区域按 msm、mosdns、mihomo、singbox 分组,显示协议、端口、状态、实际占用进程和 PID。端口来自当前配置,而不是固定的默认端口列表,因此修改管理端口、监听器或核心配置后应重新诊断。
| 状态 | 含义 |
|---|---|
| 正常 | 端口由预期的 MSM 托管进程持有 |
| 空闲 | 当前没有进程监听;关键端口空闲通常表示对应服务未正确运行 |
| 冲突 | 端口被非预期进程占用 |
| 未知 | 当前权限或运行环境无法完整识别端口归属 |
在 Linux 上,可按诊断详情进一步确认:
sudo ss -lntup
sudo lsof -i :<端口>不要看到“端口已占用”就直接结束进程:由 MosDNS、Clash、Sing-Box 或 MSM 自己持有时,这是正常状态。
命令行诊断
无法打开 Web 界面时可以运行:
msm doctor
# 指定 MSM 配置目录
msm doctor -c /opt/msm命令行输出适合在服务启动失败时做第一轮检查。若要保存结果,可由你自己的 shell 重定向:
msm doctor 2>&1 | tee msm-diagnostic.log当前 Web 页面没有“导出诊断报告”按钮。提交问题前请主动删除 Token、私钥、订阅地址、远程回家凭据、公网地址和不必要的内网拓扑。
常见处理顺序
关键端口空闲
- 到 进程管理 确认对应托管服务是否运行
- 查看服务日志中的配置校验或启动错误
- 确认页面显示的端口与当前配置一致
- 修正配置后重启服务,再回到系统诊断重新检查
端口冲突
- 展开端口详情,记录实际占用进程和 PID
- 判断占用者是否是预期托管服务
- 若确为其他服务,修改其中一方端口或按其正常流程停止服务
- 不要在未确认进程身份时强制结束它
依赖项警告
先看详情中的“当前 proxy_core”与 mosdns_enabled。当前启用组件的二进制缺失需要到相应组件管理页安装;标记为“可选,当前未启用”的组件不会阻止现有方案运行。
权限或磁盘异常
- 确认 MSM 运行账号对配置目录有读写权限
- 特权端口(小于 1024)需要合适的系统权限或能力
- 先释放磁盘空间,再执行更新、备份恢复或配置写入
- Docker 安装还要检查卷挂载权限和容器内可见路径