SSH 断开服务即挂问题排查#装了个 CLIProxyAPI,SSH 连上去的时候服务好好的,一断开 SSH 就炸了。这个问题很典型,原因其实很简单。
问题现象#
SSH 登录时,服务运行正常
关闭 SSH 后,服务停止
再次 SSH 登录,服务又 “活” 了(其实是重启了)
根本原因#查看安装脚本发现,它把服务安装为了 Systemd 用户服务 (User Service):
Terminal window1# 服务文件放在用户目录下2local systemd_dir="$HOME/.config/systemd/user"3
4# 使用 --user 参数管理5systemctl --user daemon-reload6systemctl --user start cliproxyapi.service问题在于:systemd 用户实例绑定在用户会话上。SSH 登录时会启动用户实例,SSH 断开时会销毁该实例,连带杀掉所有用户服务。
Linux 默认行为就是 “人走茶凉”。
解决方案#立即修复#运行一条命令开启 “逗留模式 (Linger)”:
Terminal window1loginctl enable-linger $(whoami)无需 sudo这个命令不需要 root 权限,它会在 /var/lib/systemd/linger/ 下创建一个以用户名命名的空文件。
验证修复#运行后断开 SSH,等几分钟再连上去检查:
Terminal window1systemctl --user status cliproxyapi如果显示 active (running) 且运行时间超过你断开 SSH 的时长,说明成功了。
确保开机自启#虽然 linger 是永久的,但还要确保服务本身设置了开机自启:
Terminal window1# 检查是否已启用2systemctl --user is-enabled cliproxyapi3
4# 如果没启用,执行5systemctl --user enable cliproxyapi彻底根治(修改安装脚本)#如果想让安装脚本自动处理这个问题,在 create_systemd_service 函数末尾加上:
Terminal window1create_systemd_service() {2 # ... 原有代码 ...3
4 systemctl --user daemon-reload5
6 # 新增:开启 Linger 模式7 if command -v loginctl >/dev/null 2>&1; then8 log_info "Enabling linger for current user..."9 loginctl enable-linger "$USER" || loginctl enable-linger "$(whoami)" || true10 fi11
12 log_success "Systemd service file created"13}其他可能原因#如果上面的方法无效,检查以下几点:
1. SSH 隧道误用#如果你是通过 ssh -L 8080:localhost:8080 这种端口转发访问的服务,断开 SSH 后隧道自然消失。这不是服务挂了,是访问路径断了。
解决: 让服务监听 0.0.0.0 而不是 127.0.0.1,直接通过服务器IP访问。
2. 服务绑定在 Localhost#检查服务配置,确保监听地址是 0.0.0.0:
1# 错误2listen: 127.0.0.1:80803
4# 正确5listen: 0.0.0.0:80803. StandardOutput 配置错误#检查服务文件,确保没有奇怪的 TTY 绑定:
1[Service]2# 错误示例3StandardOutput=tty4
5# 正确配置6StandardOutput=journal排查命令速查#Terminal window1# 查看服务状态2systemctl --user status 服务名3
4# 查看日志5journalctl --user -u 服务名 -e6
7# 查看 linger 状态8ls /var/lib/systemd/linger/9
10# 查看当前用户实例11loginctl show-user $(whoami)12
13# 列出所有用户服务14systemctl --user list-units --type=service总结#
问题解决SSH 断开服务停止loginctl enable-linger 用户名重启后不自动启动systemctl --user enable 服务名外部无法访问检查监听地址是否为 0.0.0.0SSH 隧道断开直接访问服务器IP而非 localhost参考链接#
systemd-logind 文档:https://www.freedesktop.org/wiki/Software/systemd/logind/
loginctl 手册:https://www.freedesktop.org/software/systemd/man/loginctl.html
- 合金弹头前线任务2025春季大作战:极限挑战与丰厚奖励等你来战! 活动详情 亲爱的《合金弹头前线任务》玩家们,2025年4月9日,我们将迎来一场前所未有的春季大作战!在这场极限挑战中,你将有机会获得丰...
- 喜马拉雅开放平台对接海量精彩内容 云剪辑在线音频剪辑神器 主播培训兼职副业,兴趣赚钱 小雅智能智能硬件,连接赋能 车联网平台自在出行,听我想...
- 高效同步,便捷备份:我的 Rime 输入法 Mac 与 i(Pad)OS 多设备使用方案就中文而言,输出方式从纸笔转向键盘,其影响可能远比我们想象的更大。撇开纸张空间感的丧失不谈,就思想的输出经由键盘和“输入法”完...
- LV包包为什么叫驴包?LV包包有哪些经典款式值得入手?在注重阶层身份的19世纪, 王室背景赋予了LV贵族的附加值。 LV旅行箱很快成为,上流社会首选。 旅行,最为当时只有贵族才能享受的生活, LV...
- 用手机怎么申请qq号码随着移动互联网的飞速发展,QQ作为中国最受欢迎的即时通讯工具之一,已经成为人们日常生活中不可或缺的一部分。那么,如何在手机上快速...
- 有偿合同出自 MBA智库百科(https://wiki.mbalib.com/) 有偿合同(onerous contract / Contract with consideration) 目录 1 什么是有偿合同 2 有偿合同的特点 3 有偿合同与无...
- 古代文学作品《荆轲刺秦王》作者、内容解读和评价《荆轲刺秦王》 散文篇名。选自《战国策·燕策三》。题目是后人所加。对荆轲的评价,历来见仁见智,人言合殊。北宋苏洵在其《六国论》中...
- 上古战魂:血月降临,召唤远古英灵活动名称:上古战魂:血月降临,召唤远古英灵 活动时间:2025年4月21日 - 2025年5月5日 活动地点:上古战魂游戏内 活动背景: 在上古战魂的世...
- 导电滑环拆解介绍一.简要介绍 导电滑环也叫集电环、或称旋转关节、旋转电气接口、滑环、集流环等,属于电接触滑动连接应用范畴,是实现两个相对转动机构...
- 开童装店新手怎么入行?童装店经营资料分享对于许多怀揣着创业梦想的新手来说,开一家童装店或许是个不错的选择。但作为新手小白,往往会感到迷茫,不知从何处着手。别担心,今天...