服务重启命令_杂集:centos7中使用systemctl设置自定义服务,以tomcat为例

前言:

Centos7开机第一个程序从init完全换成了systemd的启动方式。而systemd是通过管理unit的方式来控制开机服务,开机级别等功能。

在/usr/lib/systemd/system目录下包含了各种unit文件,其中就包括了以service后缀的unit,systemd在开机要想执行自启动服务,必须通过.service后缀的unit来进行控制的。

两种服务:

One、系统服务:开机不用登陆就能运行的程序[开机自启]。

Two、用户服务:需要登陆以后才能运行的程序。

1、 配置文件简单介绍:

sshd.service为例

98a8572c00eefe7e5b5156e05cfa9b92.png

1、[Unit] 区块:启动顺序与依赖关系。

字段解释:

Description字段:给出当前服务的简单描述。

Documentation字段:给出文档位置。

After字段:如果network.target或sshd-keygen.service需要启动,那么sshd.service应该在它们之后启动。

Before字段:定义sshd.service应该在哪些服务之前启动。

注意:After和Before字段只涉及启动顺序,不涉及依赖关系。

2、[Service]区块:启动行为。

启动命令:

ExecStart字段:定义启动进程时执行的命令。

ExecReload字段:重启服务时执行的命令。

ExecStop字段:停止服务时执行的命令。

ExecStartPre字段:启动服务之前执行的命令。

ExecStartPost字段:启动服务之后执行的命令。

ExecStopPost字段:停止服务之后执行的命令。

注意两点:

One、所有的启动设置之前,可以加上一个连词号[-],表示"抑制错误",即发生错误的时候,不影响其他命令的执行。

如下:

EnvironmentFile=-/etc/sysconfig/sshd,表示即使/etc/sysconfig/sshd文件不存在,也不会抛出错误。

Two、[Service]中的启动、重启、停止命令全部要求使用绝对路径!

启动类型:

Type字段定义启动类型,值如下:

Simple[默认]:ExecStart字段启动的进程为主进程。

forking:ExecStart字段将以fork()方式启动,此时父进程将会退出,子进程将成为主进程[后台运行]。

oneshot:类似于simple,但只执行一次,Systemd会等它执行完,才启动其他服务。

dbus:类似于simple,但会等待D-Bus信号后启动。

notify:类似于simple,启动结束后会发出通知信号,然后Systemd再启动其他服务。

idle:类似于simple,但是要等到其他任务都执行完,才会启动该服务。

PrivateTmp=True表示给服务分配独立的临时空间。

重启行为:

KillMode字段:定义 Systemd如何停止sshd服务。

control-group[默认值]:当前控制组里面的所有子进程,都会被杀掉。

process:只杀主进程。

mixed:主进程将收到SIGTERM信号,子进程收到SIGKILL信号。

none:没有进程会被杀掉,只是执行服务的stop命令。

Restart字段:定义了sshd退出后,Systemd的重启方式

Restart字段的值:

no[默认值]:退出后不会重启。

on-success:只有正常退出时[退出状态码为0],才会重启。

on-failure:非正常退出时[退出状态码非0],包括被信号终止和超时,才会重启。

on-abnormal:只有被信号终止和超时,才会重启。

on-abort:只有在收到没有捕捉到的信号终止时,才会重启。

on-watchdog:超时退出,才会重启。

always:不管是什么退出原因,总是重启。

RestartSec字段:表示 Systemd 重启服务之前,需要等待的秒数。

注意:

对于守护进程,推荐设为on-failure。

对于那些允许发生错误退出的服务,可以设为on-abnormal。

3、[Install] 区块:定义如何安装这个配置文件,即怎样做到开机启动。

WantedBy字段:表示该服务所在的Target。

Target的含义是服务组,表示一组服务。

WantedBy=multi-user.target指的是:sshd所在的Target是multi-user.target。

注意:

这个设置非常重要,因为执行systemctl enable sshd.service命令时,sshd.service的一个符号链接,就会放在/etc/systemd/system目录下面的multi-user.target.wants子目录之中。

Systemd有默认的启动 Target。

2、 测试

以tomcat为例

sudo vim /usr/lib/systemd/system/tomcat.service

写入如下:

[Unit]

Description=my tomcat service

After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]

Type=forking

Environment="JAVA_HOME=/root/General/jdk1.8.0_181"

PIDFile=/home/odysee/General/tomcat8.5/tomcat.pid

ExecStart=/home/odysee/General/tomcat8.5/bin/startup.sh

ExecReload=/bin/kill -s HUP $MAINPID

ExecStop=/bin/kill -s QUIT $MAINPID

PrivateTmp=true

[Install]

WantedBy=multi-user.target

91f44072ed2873304b1767da99948abb.png

创建上面服务需要的pid

vim /home/odysee/General/tomcat8.5/bin/catalina.sh

加入如下:

CATALINA_PID="$CATALINA_BASE/tomcat.pid"

02e6cead4bfc1f8f493b31100128a2c1.png

3、 设置为开机启动/禁止

sudo systemctl enable/disable tomcat.service

fe1d58462f373d9a03eb54e685bc76be.png

启动tomcat

sudo systemctl start tomcat.service

查看状态

systemctl status tomcat.service

4cde4b4f906a2c2cdd69c058d1ac50f0.png

停止tomcat

sudo systemctl stop tomcat.service

b00bbc702b9647e575e2af9dd4480472.png

4、重启OS

init 6

23a23eb20bbf4cc4fa0f95e5ce4ed81c.png

浏览器访问

fadb303a59b69227e273b3d1087de2b4.png

测试完成

欢迎大家给予宝贵的意见或者建议。

欢迎大家补充或者共享一些其他的方法。

感谢支持。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值