例一:创建服务配置文件/usr/lib/systemd/system/aria2.service(aria2替换为自己的服务名)
内容如下:
[Unit]
#服务简单描述(我的服务名aria2)
Description=aria2
#指定先启动after服务,再启动[Service]
After=network.target
[Service]
#跟踪PID
PIDFile=/run/aria2.pid
#重点:Exec必须使用绝对路径
ExecStart=/usr/bin/aria2c --conf-path=/etc/aria2/aria2.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
[Install]
#定义多用户模式
WantedBy=multi-user.target
_________________________________________________________________________
例二:创建服务配置文件/usr/lib/systemd/system/vlmcsd.service(vlmcsd替换为自己的服务名)
[Unit]
Description=vlmcsd
After=network.target
[Service]
PIDFile=/run/vlmcsd.pid
ExecStart=/usr/bin/vlmcsd -p /run/vlmcsd.pid
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
[Install]
WantedBy=multi-user.target
注:守护进程需定义Type和Restart
#推荐:Type=forking
simple 默认参数,进程作为主进程
forking 是后台运行的形式,主进程退出,os接管子进程
oneshot 类似simple,在开始后续单元之前,过程退出
DBUS 类似simple,但随后的单元只在主进程获得D总线名称之后才启动
notify 类似simple,但是随后的单元仅在通过sd_notify()函数发送通知消息之后才启动
idle 类似simple,服务二进制文件的实际执行被延迟到所有作业完成为止,不与其他服务的输出相混合,如状态输出与服务的shell输出混合
#推荐Restart=[always/on-failure]
定义何种情况Systemd会自动重启当前服务,值:
包括always(总是重启)、no 、on-success、on-failure、on-abnormal、on-abort、on-watchdog
对于守护进程,推荐设为on-failure。对于那些允许发生错误退出的服务,可以设为on-abnormal
Systemctl 常用命令
重新加载服务配置文件:systemctl daemon-reload
开机启动服务: systemctl enable [服务名]
取消开机启动服务:systemctl disabel [服务名]
启动/停止/重启服务:systemctl start/stop/restart [服务名]
查询服务状态:systemctl status [服务名]
查询所有服务状态: systemctl list-unit-files
查询所有开机服务:systemctl list-unit-files
enabled状态:开机启动
disable状态:开机禁用
static状态:可以被其他服务唤醒
发表评论