制作服务
这里以开机执行一个程序为例,演示设置开机启动行为的过程
创建 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 配置