常见排错与小点整合
创建于 2026-05-09
目录
- 常见排错与小点整合
- 1. 通用排错顺序
- 2. bash\r: No such file or directory
- 3. systemctl 状态页卡住
- 4. Linux 延时命令
- 5. 端口被占用
- 6. Permission denied
- 7. SSH 连接不上
- 8. GitHub SSH 测试失败
- 9. Docker permission denied
- 10. Docker 容器启动失败
- 11. /health 不通怎么排查
- 12. PostgreSQL 登录失败
- 13. PowerShell 执行策略错误
- 14. curl 在 Windows 行为奇怪
- 15. Clash / 代理更新突然不稳定
- 16. TUN 和系统代理区别
- 17. Clash 订阅显示流量
- 18. Windows 本地 bridge 不通
- 19. 信息源/WebVPN 小点
- 20. 最小排错模板
- 我的新增记录
常见排错与小点整合
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
如果失败:
- 服务器是否有 key:
ls -la ~/.ssh/*.pub - 公钥是否添加到 GitHub。
- 私钥权限是否太开放:
chmod 600 ~/.ssh/id_ed25519 - 仓库地址是否是 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
注意:
- 用户名、数据库名、密码必须对应。
localhost和127.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 端服务没挂,但客户端状态脏了。
排查顺序:
- 客户端重启。
- 检查订阅 URL 能否浏览器访问。
- 查看 Clash/Mihomo 日志。
- 检查 VPS 端服务日志。
- 检查本地系统代理/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
- 当前目录:
- 执行命令:
- 日志:
- 根因:
- 解决命令:
- 下次预防: