很多小伙伴部署自研程序、后端服务、工具程序时,都会遇到一个高频问题:程序手动能跑,重启服务器就挂、进程意外退出不会自动重启。
靠 nohup、screen 后台运行不仅不规范,还不稳定,无法实现自动保活、开机自启、统一运维管理。
今天就以 AIDBM AI Database Backup Manager(AI数据库离线备份工具) 为例,手把手教大家用 systemd 搭建一套永久常驻、故障自动重启、开机自启、一键运维的标准Linux服务,新手也能零踩坑直接落地。
这套部署方案适配所有Linux自定义程序,学会即可通用所有业务服务部署。
一、部署前环境确认
本次部署基于已安装完成的 AIDBM 离线版本,固定程序路径如下,大家可对照自己服务器核对:
程序根目录:/AIDBM/AIDBM_offline_v20260909
主程序启动文件:/AIDBM/AIDBM_offline_v20260909/AIDBM
核心需求:
-
服务器开机自动启动 AIDBM 服务
-
程序崩溃、意外退出后 自动重启保活
-
统一标准化运维,支持查状态、看日志、一键启停重启
-
突破文件句柄限制,适配数据库备份高并发场景
二、核心步骤:创建 systemd 服务配置文件
systemd 是 Linux 系统默认的服务管理工具,所有常驻服务、开机自启服务,官方标准方案都是编写 .service 服务文件。
我们直接在系统服务目录新建 AIDBM 专属服务文件,命令如下:
Plain
vi /etc/systemd/system/aidbm.service
复制下方完整适配成品配置(已提前适配好路径、工作目录、自动重启、文件句柄优化,无需二次修改):
Plain
[Unit]
Description=AIDBM AI Database Backup Manager
After=network.target
[Service]
Type=simple
WorkingDirectory=/AIDBM/AIDBM_offline_v20260909
ExecStart=/AIDBM/AIDBM_offline_v20260909/AIDBM
Restart=always
RestartSec=5
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
配置逐段解析(看懂不再死记硬背)
1. Unit 服务基础描述
-
Description:服务备注说明,方便运维识别
-
After=network.target:联网后再启动服务,避免网络未就绪导致备份服务启动失败
2. Service 核心运行配置
-
Type=simple:标准前台常驻服务模式,适配绝大多数程序
-
WorkingDirectory:指定程序工作目录,保证配置文件、资源文件正常加载
-
ExecStart:程序绝对启动路径,systemd 必须使用绝对路径,杜绝路径报错
-
Restart=always:无论程序如何退出,一律自动重启,实现7×24小时保活
-
RestartSec=5:服务异常退出后,延迟5秒重启,避免频繁重启占用资源
-
LimitNOFILE=65535:调高系统文件句柄上限,适配数据库备份大量文件读写场景,规避报错
3. Install 开机自启配置
- WantedBy=multi-user.target:多用户模式下开机自动生效,服务器启动即运行服务
三、一键生效:重载配置+开机自启+启动服务
服务文件编写完成后,必须执行以下三条命令,让系统识别新服务并完成部署:
Plain
# 重载systemd配置,识别新增的aidbm服务
systemctl daemon-reload
# 设置开机自启
systemctl enable aidbm
# 立即启动服务
systemctl start aidbm
三条命令执行完毕,部署全部完成,无需其他额外操作。
四、日常运维必备命令(收藏备用)
部署完成后,日常运维只需记住这几组命令,全覆盖服务管理场景:
1. 查看服务运行状态
Plain
systemctl status aidbm
可直观查看:服务是否启动、运行时长、是否异常、进程状态。
2. 重启服务(更新配置/重启程序)
Plain
systemctl restart aidbm
3. 停止服务
Plain
systemctl stop aidbm
4. 实时查看运行日志(排查报错神器)
Plain
journalctl -u aidbm -f
-f 参数为实时滚动日志 ,退出查看按 Ctrl+C 即可。
五、常见避坑总结
-
所有路径必须是绝对路径:systemd 不支持相对路径,否则服务启动直接失败;
-
修改service文件后必须重载配置 :修改配置不执行
daemon-reload,修改不生效; -
After=network.target 必不可少:数据库备份服务依赖网络,提前启动会导致连接数据库失败;
-
LimitNOFILE 优化关键:数据库备份场景文件读写频繁,默认句柄过低会导致程序闪退、备份失败。
六、通用复用技巧
本文以 AIDBM 为例的整套方案,完全通用所有Linux自定义程序。
大家后续部署 Java、Python、Go 程序、自研脚本、各类工具服务,只需替换:
✅ WorkingDirectory 程序目录
✅ ExecStart 程序启动绝对路径
即可快速实现常驻保活+开机自启,告别 screen、nohup 不规范部署方式。
写在最后
Systemd 是 Linux 运维的必备核心技能,标准化服务部署,不仅能让程序稳定7×24小时运行,更能统一运维规范,方便后续排查问题、迁移服务、批量管理。
本次 AIDBM 部署方案开箱即用,配置经过优化适配生产环境,直接复制即可落地,建议收藏备用!