Skip to content

系统诊断 ​

系统诊断用于检查 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 上,可按诊断详情进一步确认:

bash
sudo ss -lntup
sudo lsof -i :<端口>

不要看到“端口已占用”就直接结束进程:由 MosDNS、Clash、Sing-Box 或 MSM 自己持有时,这是正常状态。

命令行诊断 ​

无法打开 Web 界面时可以运行:

bash
msm doctor

# 指定 MSM 配置目录
msm doctor -c /opt/msm

命令行输出适合在服务启动失败时做第一轮检查。若要保存结果,可由你自己的 shell 重定向:

bash
msm doctor 2>&1 | tee msm-diagnostic.log

当前 Web 页面没有“导出诊断报告”按钮。提交问题前请主动删除 Token、私钥、订阅地址、远程回家凭据、公网地址和不必要的内网拓扑。

常见处理顺序 ​

关键端口空闲 ​

  1. 到 进程管理 确认对应托管服务是否运行
  2. 查看服务日志中的配置校验或启动错误
  3. 确认页面显示的端口与当前配置一致
  4. 修正配置后重启服务,再回到系统诊断重新检查

端口冲突 ​

  1. 展开端口详情,记录实际占用进程和 PID
  2. 判断占用者是否是预期托管服务
  3. 若确为其他服务,修改其中一方端口或按其正常流程停止服务
  4. 不要在未确认进程身份时强制结束它

依赖项警告 ​

先看详情中的“当前 proxy_core”与 mosdns_enabled。当前启用组件的二进制缺失需要到相应组件管理页安装;标记为“可选,当前未启用”的组件不会阻止现有方案运行。

权限或磁盘异常 ​

  • 确认 MSM 运行账号对配置目录有读写权限
  • 特权端口(小于 1024)需要合适的系统权限或能力
  • 先释放磁盘空间,再执行更新、备份恢复或配置写入
  • Docker 安装还要检查卷挂载权限和容器内可见路径

下一步 ​