跳到主要内容

制作服务

这里以开机执行一个程序为例,演示设置开机启动行为的过程

创建 systemd 服务文件

假设你的 dmp 可执行文件在 /root/dmp,创建 /etc/systemd/system/dmp.service:

[Unit]
# 服务描述信息(管理员可通过`systemctl status`查看)
Description=DMP Service

# 定义服务启动时机:在网络服务就绪后启动
# 如果脚本需要图形界面,需改为`After=graphical.target`
After=network.target

# 核心执行命令:
[Service]
#Type=simple: systemd 直接跟踪主进程,不需等待 fork
#ExecStart= 启动 DMP 主程序
# -c 控制台模式或指定程序行为(具体请查阅 DMP 文档)
# -l 80 指定监听端口为 80(网页访问端口)
# -s /root 指定配置文件或数据库目录为 /root
#Restart=on-failure 程序异常退出时自动重启
#User=root 以 root 用户身份运行服务
#WorkingDirectory=/root 设置工作目录为 /root(因脚本位于/root目录)
Type=simple
ExecStart=/root/dmp -c -l 80 -s /root
Restart=on-failure
User=root
WorkingDirectory=/root

# 服务失败时自动重启(适用于需要持续运行的服务)
Restart=on-failure

# 以root用户身份运行(因脚本位于/root目录)
User=root

# 可选环境变量(如需图形界面需设置DISPLAY):
# Environment="DISPLAY=:0"

[Install]
# 定义服务所属启动级别:多用户模式(标准命令行模式)
# 如果需在图形界面后启动,需改为`graphical.target`
WantedBy=multi-user.target

配置服务

将服务文件放置到/etc/systemd/system/dmp.service

重新加载 systemd 配置

sudo systemctl daemon-reload

启用服务(开机自启)

systemctl enable dmp

启动服务

systemctl start dmp

查看状态

systemctl status dmp

停止并修改服务

如果要修改服务配置,需要先停止,再重新加载

停止服务

systemctl stop dmp

编辑并保存 /etc/systemd/system/dmp.service 文件后,重新加载、启用(开机自启)、启动 systemd 配置