天空大作战
94.86M · 2026-02-04
很多自研脚本、二进制程序、Python/Java/Node服务,安装后不提供 systemd 配置,没法直接systemctl管理和开机自启。本文用最简流程,教你手写服务文件实现自启动。
/usr/lib/systemd/system/:系统/软件包默认配置,不要手动改,更新会覆盖/etc/systemd/system/:用户自定义服务目录,优先级更高,不会被覆盖,我们只写这里所有 .service 通用结构,只改关键路径即可:
[Unit] # 服务说明与启动顺序
[Service] # 核心运行参数
[Install] # 开机自启配置
以通用后端服务为例,新建 /etc/systemd/system/xxx.service,替换括号内容直接用:
[Unit]
Description=自定义业务服务
After=network.target
[Service]
WorkingDirectory=(你的程序所在目录)
ExecStart=(完整绝对路径启动命令)
Restart=on-failure
RestartSec=3
[Install]
WantedBy=multi-user.target
ExecStart=/opt/venv/bin/gunicorn -w 4 -b 0.0.0.0:8000 project.wsgi:application
ExecStart=/usr/bin/java -jar /opt/app/app.jar
ExecStart=/usr/bin/python3 /opt/script/run.py
systemctl daemon-reload
# 启动
systemctl start 服务名
# 查看状态&报错
systemctl status 服务名
# 设置开机自启
systemctl enable 服务名
# 重启
systemctl restart 服务名
# 停止
systemctl stop 服务名
启动失败直接看日志:
journalctl -u 服务名 -xe
常见问题:相对路径、权限不足、启动命令本身错误,先手动跑一遍ExecStart确认命令可执行。
/etc/systemd/system下,在服务.service写好固定的三段结构,改完执行 daemon-reload,再 start+enable即可。