常见排错与小点整合

排错 MeetYou Linux Windows Docker Git
创建于 2026-05-09
目录

常见排错与小点整合

Summary

这里专门收集你经常问到的“小问题”:不是很大,但会卡住半天。排错原则是先定位层级:命令是否存在 → 路径是否正确 → 权限是否够 → 进程是否运行 → 端口是否监听 → 配置是否正确 → 日志里报什么。

相关:00-MOC-命令行与部署知识库总览01-Windows-PowerShell-命令笔记03-Linux-命令笔记04-Docker-相关知识笔记06-MeetYou-Core-部署运维手册

1. 通用排错顺序

1. 我在哪?          pwd / Get-Location
2. 文件在不在?      ls / dir
3. 命令在不在?      which / where
4. 权限够不够?      sudo / chmod / chown
5. 进程在不在?      ps / tasklist / systemctl
6. 端口开没开?      ss / netstat / Get-NetTCPConnection
7. 日志写什么?      journalctl / docker logs / tail
8. 配置对不对?      .env / JSON / YAML
9. 网络通不通?      curl / ping / Test-NetConnection
10. 最近改了什么?   git diff / git log

2. bash\r: No such file or directory

现象:

/usr/bin/env: ‘bash\r’: No such file or directory

原因:脚本在 Windows 下保存成 CRLF 换行,Linux 需要 LF。 被识别成命令名的一部分。

修复:

sed -i 's/\r$//' script.sh
chmod +x script.sh

或:

sudo apt install -y dos2unix
dos2unix script.sh

预防:.gitattributes

*.sh text eol=lf
*.ps1 text eol=crlf
*.bat text eol=crlf
*.cmd text eol=crlf

相关:05-Git-SSH-GitHub-命令笔记#10. CRLF 换行问题

3. systemctl 状态页卡住

现象:

sudo systemctl status postgresql

屏幕停在状态页。

处理:按:

q

原因:输出进入了 pager,一般是 less

4. Linux 延时命令

sleep 5        # 等 5 秒
sleep 1m       # 等 1 分钟
sleep 1h       # 等 1 小时

脚本里常用:

sudo systemctl restart meetyou-core
sleep 3
curl http://127.0.0.1:8000/health

5. 端口被占用

Linux:

sudo lsof -i :8000
ss -lntp | grep 8000
kill PID

Windows PowerShell:

Get-NetTCPConnection -LocalPort 38951
$pid = (Get-NetTCPConnection -LocalPort 38951).OwningProcess
Stop-Process -Id $pid -Force

Windows CMD:

netstat -ano | findstr :38951
taskkill /PID 12345 /F

6. Permission denied

常见原因:

  • 文件不属于当前用户。
  • 脚本没有执行权限。
  • 访问系统目录需要 sudo
  • Docker volume 目录权限不匹配。

排查:

whoami
ls -la 文件或目录

修复:

chmod +x script.sh
sudo chown -R ubuntu:ubuntu /opt/meetyou
sudo command

Warning

不要用 `chmod 777` 作为默认解法。它可能让密钥、配置、数据暴露。

7. SSH 连接不上

排查:

ssh -v ubuntu@服务器IP

常见原因:

现象 可能原因
timeout IP/端口/安全组/防火墙问题
permission denied 用户名/key/authorized_keys 错
host key changed 服务器重装或 IP 复用

权限参考:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_ed25519
chmod 644 ~/.ssh/authorized_keys

退出 SSH:

exit

Ctrl + D

8. GitHub SSH 测试失败

测试:

ssh -T git@github.com

如果失败:

  1. 服务器是否有 key:ls -la ~/.ssh/*.pub
  2. 公钥是否添加到 GitHub。
  3. 私钥权限是否太开放:chmod 600 ~/.ssh/id_ed25519
  4. 仓库地址是否是 SSH 地址:git@github.com:xxx/yyy.git

9. Docker permission denied

现象:

permission denied while trying to connect to the Docker daemon socket

修复:

sudo usermod -aG docker $USER
newgrp docker

或者临时:

sudo docker ps

10. Docker 容器启动失败

排查顺序:

docker compose ps
docker compose logs --tail 100
docker logs 容器名
ss -lntp

常见原因:

  • 端口冲突。
  • .env 变量没传进去。
  • volume 目录权限不对。
  • 容器内服务监听的是 127.0.0.1 而不是 0.0.0.0
  • 镜像架构不匹配。

11. /health 不通怎么排查

服务器本机:

sudo systemctl status meetyou-core --no-pager
sudo journalctl -u meetyou-core -n 200 --no-pager
ss -lntp | grep 8000
curl http://127.0.0.1:8000/health

外部:

curl -I https://core.maziteng.cn
curl https://core.maziteng.cn/health

判断:

本地 /health 外部 /health 可能问题
不通 不通 Core 没起来/崩了/端口错
不通 Nginx/Caddy/防火墙/域名/TLS
通但认证失败 token/header 错

12. PostgreSQL 登录失败

测试:

psql -h 127.0.0.1 -U meetyou -d meetyou

检查连接串:

MEETYOU_DATABASE_URL=postgresql+psycopg://meetyou:<密码>@127.0.0.1:5432/meetyou

注意:

  • 用户名、数据库名、密码必须对应。
  • localhost127.0.0.1 在某些配置下认证路径可能不同,优先按实际连接串统一。
  • 密码里有特殊字符可能需要 URL encode。

13. PowerShell 执行策略错误

现象:

Activate.ps1 cannot be loaded because running scripts is disabled

修复:

Set-ExecutionPolicy -Scope CurrentUser RemoteSigned

然后重新激活:

.\.venv\Scripts\Activate.ps1

14. curl 在 Windows 行为奇怪

PowerShell 中 curl 可能是别名:

Get-Alias curl

使用原生 curl:

curl.exe https://core.maziteng.cn/health

或用:

Invoke-RestMethod https://core.maziteng.cn/health

15. Clash / 代理更新突然不稳定

常见可能:

  • 本地 Clash/Mihomo 核心状态异常。
  • 订阅服务临时不可达。
  • DNS/规则缓存异常。
  • 系统代理或 TUN 状态残留。
  • VPS 端服务没挂,但客户端状态脏了。

排查顺序:

  1. 客户端重启。
  2. 检查订阅 URL 能否浏览器访问。
  3. 查看 Clash/Mihomo 日志。
  4. 检查 VPS 端服务日志。
  5. 检查本地系统代理/TUN 是否冲突。

为什么 restart 有时有效:

restart 会刷新客户端进程状态、连接池、DNS 缓存、规则缓存、订阅拉取状态。
所以“重启好了”不代表根因消失,只能说明状态层或连接层很可能脏了。

16. TUN 和系统代理区别

模式 作用层 优点 缺点
系统代理 应用主动走 HTTP/SOCKS 代理 简单、可控 不支持代理感知差的程序
TUN 虚拟网卡拦截流量 覆盖更全 更容易影响局域网/特殊软件

你的偏好:

国内直连
局域网/本地端口直连
指定程序/端口可控
Hysteria2 + Clash 规则分流为主
WireGuard 作为备用全局 VPN

17. Clash 订阅显示流量

订阅服务要返回响应头:

Subscription-Userinfo: upload=...; download=...; total=...; expire=...

要求:

  • upload/download/total:字节。
  • expire:Unix 时间戳。

这类数据建议由服务端统计,不要手填到客户端配置里。

18. Windows 本地 bridge 不通

排查:

Get-NetTCPConnection -LocalPort 38951 -ErrorAction SilentlyContinue
Invoke-RestMethod http://127.0.0.1:38951/desktop/bridge/status

可能原因:

  • desktop agent 没启动。
  • 端口被占用。
  • 配置端口不是 38951。
  • UI baseUrl 指错。
  • 防火墙或安全软件拦截。

19. 信息源/WebVPN 小点

对校园/校内信息源,重点不是只会爬,而是判断访问条件:

公网可访问?
是否需要登录?
是否需要 WebVPN?
是否有验证码/风控?
是否允许抓取?
是否有 RSS/API/公开数据源?

开发建议:

  • 信息源配置要写明 access_type:public / login_required / webvpn_required / manual。
  • 对 WebVPN 源不要默认高频抓取。
  • 先做人工可验证的信息源目录,再做采集器。

20. 最小排错模板

以后遇到问题,可以按这个格式记:

### 2026-xx-xx 问题名

- 场景:
- 现象:
- 错误信息:
- 我在哪台机器:Windows / Linux server / Docker container
- 当前目录:
- 执行命令:
- 日志:
- 根因:
- 解决命令:
- 下次预防:

我的新增记录


反向链接:00-MOC-命令行与部署知识库总览06-MeetYou-Core-部署运维手册