开机自启服务配置重启自动恢复中转

为什么重启后中转服务就停了?

很多新手在折腾中转服务(比如用 frp 做内网穿透、用 socat 做端口转发、或者用 nginx 反代)时,都会遇到一个尴尬情况:服务器一重启,中转服务就停了,每次都要手动 ssh 上去启动,非常麻烦。
究其原因,就是没有把中转服务注册成系统服务并配置开机自启。
本文从零开始,教你用最常用的 systemd 方式配置开机自启,确保重启后中转功能自动恢复。

准备条件

  • 一台 Linux 服务器(本文以 CentOS 7 / Ubuntu 20.04 为例,命令通用)
  • 已经安装并调试好的中转服务(假设可执行文件路径 /usr/local/bin/your-service,配置文件 /etc/your-service.conf
  • 拥有 root 权限或 sudo 权限

如果你的中转服务是直接命令行运行的,比如 ./frps -c ./frps.toml,那么下面步骤完全适用。

一步步配置 systemd 服务实现自动启动

# 使用 vim 创建服务单元文件
sudo vim /etc/systemd/system/your-service.service

粘贴以下内容,请根据自己的服务修改 ExecStart 命令和路径:

[Unit]
Description=Your Transit Service (中转服务)
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
ExecStart=/usr/local/bin/your-service -c /etc/your-service.conf
Restart=always
RestartSec=5
User=root
Group=root

[Install]
WantedBy=multi-user.target

关键字段说明:

  • AfterWants:确保网络完全就绪后再启动,避免因网络未连通导致服务启动失败。
  • Restart=always:即使服务异常退出,也会自动重启,进一步提升稳定性。
  • RestartSec:重启前等待 5 秒,避免频繁重启。

保存并退出后执行:

# 重新加载 systemd 配置
sudo systemctl daemon-reload

# 开启开机自启
sudo systemctl enable your-service

# 立即启动服务
sudo systemctl start your-service

# 查看状态
sudo systemctl status your-service

如果状态显示 active (running) 且没有红色错误,说明服务已正常运行且已加入开机自启。

新手最容易踩的坑

  • 路径写错:ExecStart 必须使用绝对路径,可以用 which 你的服务名称 查看完整路径。
  • 配置文件权限不足:如果配置文件只允许 root 读取,但服务用普通用户运行,会导致启动失败。建议保持一致。
  • 忽略网络依赖:如果你的中转服务需要联网(例如 frp 连接服务器),务必加上 After=network-online.target,否则启动时网络未就绪,服务直接报错退出。
  • 忘记 daemon-reload:每次修改 .service 文件后,必须执行 sudo systemctl daemon-reload,否则 systemd 使用的还是旧配置。
  • 旧系统无 systemd:如果你的系统是 CentOS 6 或更早,没有 systemd,可以使用 rc.local:在 /etc/rc.local 中添加启动命令,并赋予执行权限 chmod +x /etc/rc.d/rc.local

如何确认服务已正常恢复

完成配置后,执行一次完整重启验证:

sudo reboot

等待服务器重启完毕,ssh 登录后直接查看服务状态:

sudo systemctl status your-service

如果显示 active (running),并且 enabled 字样出现在服务描述的末尾,说明开机自启成功。
你也可以用 ps aux | grep your-service 确认进程存在。

更进一步,测试外部连接是否正常(例如 frp 能否成功连接、端口是否可访问)。
如果一切正常,那么你的中转服务已经实现“重启自动恢复”。

高频问题解答

Q:我的服务没有 systemd 单元文件,可以直接把启动命令扔到 /etc/rc.local 吗?
A:可以,但不推荐。rc.local 的启动顺序靠后,且缺少进程守护和依赖管理。优先使用 systemd。只有老旧系统才考虑 rc.local。

Q:服务总是重启失败,怎么排查?
A:用 journalctl -u your-service -n 50 查看最近 50 行日志,定位具体错误。常见原因:配置文件格式错误、端口被占用、缺少权限。

Q:配置了开机自启,但重启后还是没启动?
A:检查 systemctl 的 enable 状态:sudo systemctl is-enabled your-service,输出应为 enabled。如果不是,说明你没成功 enable;如果是 enabled 但仍不启动,检查日志看服务是否在启动时报错退出。

总结

通过上述步骤,你已经学会了用 systemd 为中转服务配置开机自启,彻底告别重启后手动恢复的烦恼。
关键就是两步:写一个正确的 .service 文件,然后 enablestart
遇到问题时优先查看 journal 日志和状态输出,绝大多数错误都能快速定位。
如果你正在处理开机自启服务配置重启自动恢复中转的问题,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。

分享到:
上一篇
压缩解压批量处理大模型与网站备份:压缩解压与批量处理
下一篇
环境变量永久设置存放模型路径的方法(零基础也能操作)
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意