Centos7 使用Systemctl创建自定义系统服务

前言

最近在linux上部署一个服务,希望它在系统启动的时候自动启动。考虑将启动命令加入到/etc/rc.d/rc.local里面去,发现注解提示建议采用systemctl方式来代替实现。所以开始学习使用systemctl来创建自定义服务:实现了在系统启动的时候自动启动,并且在服务异常挂掉的情况下,自动重启服务。


rc.local文件截图

Systemctl简介

Systemd是一个系统管理守护进程、工具和库的集合,用于取代System V初始进程。Systemd的功能是用于集中管理和配置类UNIX系统。

创建自定义service

使用systemctl将自己的服务设置成系统服务方式比较简单,只需要一个配置文件就可以搞定,在/lib/systemd/system目录下面创建文件:consumer.service,文件格式如下:

[Unit]
Description=kafkaConsumer-1 service
After=syslog.target network.target

[Service]
Type=forking
ExecStart=/opt/local/kafkaConsumerServer-1/startup.sh
ExecStop=/opt/local/kafkaConsumerServer-1/stop.sh
PrivateTmp=true
RestartSec=8
Restart=always

[Install]
WantedBy=multi-user.target

配置文件主要分为3大块:

【Unit】

主要包括服务说明,与其他服务的联动关系
Description:服务描述
After:在其他服务启动之后执行
Before:在其他服务之前执行
注:After和Before字段只涉及启动顺序,不涉及依赖关系

【Service】

是服务的一些具体运行参数的设置
Type:运行的形式,forking是后台运行的形式
PIDFile:存放PID的文件路径
ExecStart:启动的命令
ExecStop:停止的命令
PrivateTmp:True表示给服务分配独立的临时空间
Restart:自动重启
RestartSec:多少秒后重启
ExecReload:重启服务时执行的命令
ExecStartPre:启动服务之前执行的命令
ExecStartPost:启动服务之后执行的命令
ExecStopPost:停止服务之后执行的命令
注:执行命令全部要求使用绝对路径

【Install】

Install区块,定义如何安装这个配置文件
WantedBy:表示该服务所在的 Target,WantedBy=multi-user.target指的是:sshd 所在的 Target 是multi-user.target

运行自定义service

给service添加可执行权限

chmod 754 consumer.service

使用命令:

# 添加到系统开机启动服务
systemctl enable consumer.service
# 移除服务
systemctl disable consumer.service
# 启动服务
systemctl start consumer.service
# 停止服务
systemctl stop consumer.service
# 查看服务是否开启自启
systemctl is-enabled consumer.service

你可能感兴趣的:(Centos7 使用Systemctl创建自定义系统服务)