centos7 systemd/chkconfig管理服务

一、参数说明

[Unit]
Description    简单说明
Documentation  文档相关的内容
After 	说明本unit是在哪个服务启动之后才启动的意思,仅是说明服务启动顺序而已,没有强制要求
Before	与After的意义相反
Requires 本unit需要在哪个服务启动后才能够启动,就是设置服务间的依赖性。如果此设置的服务没有启动成功,那么本unit就不会被启动
wants   与requitres相反,规范的是这个unit之后还要启动什么服务,如果这wants后接的服务没有启动成功,其实并不会影响到这个unit本身
Conflicts  这个项目后面接的服务如果有启动,那么本unit就不能启动,如果本unit启动了,则指定的服务就不能启动

[Service]
Type	说明这个服务的启动方式,会影响到ExecStart,主要有下面几种类型:
	simple:默认值,这个服务主要由ExecStart设置的程序来启动,启动后常驻于内存中。
	forking:由ExecStart指定的启动的程序通过spawns产生子进程提供服务,然后父进程退出。
	oneshot:与 simple 类似,不过这个程序在工作完毕后就结束了,不会常驻在内存中。
	dbus:与 simple 类似,但这个服务必须要在取得一个 D-Bus 的名称后,才会继续运行!因此设置这个项目时,通常也要设置 BusName= 才行。
	idle:与 simple 类似,意思是,要执行这个服务必须要所有的工作都顺利执行完毕后才会执行。这类的服务通常是开机到最后才执行即可的服务。
	notify:与 simple 类似,但这个服务必须要收到一个 sd_notify() 函数发送的消息后,才会继续运行。
ExecStart
就是实际执行此服务的程序。接受 "命令 参数 参数..." 的格式,不能接受 <, >, >>, |, & 等特殊字符,很多的 bash 语法也不支持。所以,要使用这些特殊的字符时,最好直接写入到脚本里面去!
ExecStartPre 和 ExecStartPost 分别在服务启动前后,执行额外的命令。
ExecStop 用来实现 systemctl stop 命令,关闭服务。
ExecReload 用来实现 systemctl reload 命令,重新加载服务的配置信息。
Restart 当设置为 Restart=1 时,如果服务终止,就会自动重启此服务。
RestartSec 与 Restart 配合使用,在服务终止多长时间之后才重新启动它。默认是 100ms。
KillMode
可以是 process, control-group, none 中的一种,如果是 process 则服务终止时,只会终止主要的程序(ExecStart接的后面那串指令),如果是 control-group 时,则由此 daemon 所产生的其他 control-group 的程序,也都会被关闭。如果是 none 的话,则没有程序会被关闭。
TimeoutSec
若这个服务在启动或者是关闭时,因为某些缘故导致无法顺利 "正常启动或正常结束" 的情况下,则我们要等多久才进入 "强制结束" 的状态!
RemainAfterExit
当设置为 RemainAfterExit=1 时,则当这个服务所属的所有程序都终止之后,此服务会再尝试启动。

[Install] 部分
WantedBy    这个设置后面接的大部分是 *.target unit。意思是,这个 unit 本身是附挂在哪个 target unit 下面。
Also    当目前这个 unit 被 enable 时,Also 后面接的 unit 也要 enable 的意思。
Alias    当 systemctl enable 相关的服务时,则此服务会进行链接文件的创建!

二、案例
tomcat

[root@test ~]#vim /lib/systemd/system/tomcat.service 
[Unit]
Description=tomcat 8080
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/apache-tomcat-9.0.41/bin/catalina.sh start
ExecStop=/usr/local/apache-tomcat-9.0.41/bin/catalina.sh stop

[Install]
WantedBy=multi-user.target
[root@test soft]# systemctl enable tomcat
Created symlink from /etc/systemd/system/multi-user.target.wants/tomcat.service to /usr/lib/systemd/system/tomcat.service.
[root@test soft]# systemctl list-unit-files|grep tomcat
tomcat.service                                enabled

nginx

[root@test soft]# vim /usr/lib/systemd/system/nginx.service
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

redis

[Service]
Type=forking
PIDFile=/var/run/redis_6379.pid
ExecStart=/usr/local/bin/redis-server /etc/redis.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

守护进程
当进程kill或异常退出时,5秒后自动启动
cat /usr/lib/systemd/system/jar_goods.service

[Unit]
Description=sysd server daemon
#Documentation=no
#After=no
#Wants=no

[Service]
directory=/usr/local/spring/goods
User=curefun
#EnvironmentFile=no
ExecStart=/usr/local/jdk/bin/java -jar /usr/local/spring/goods/goods-0.0.1-SNAPSHOT.jar
ExecReload=/bin/kill -HUP $MAINPID
Type=simple
KillMode=process
Restart=on-failure
RestartSec=5s

[Install]
WantedBy=multi-user.target graphic.target

这里注意要绝对路径

三、chkconfig

[root@localhost ~]# vim /etc/init.d/tomcat 
#!/bin/bash
# chkconfig: 235 95 65
start(){
        /usr/local/tomcat/bin/catalina.sh start
}

stop(){
        /usr/local/tomcat/bin/catalina.sh stop
}

restart (){
        /usr/local/tomcat/bin/catalina.sh stop
        sleep 5
         /usr/local/tomcat/bin/catalina.sh start
}

case "$1" in
        start)
                start
                ;;
        stop)
                stop
                ;;
        restart)
                restart
                ;;
        *)
        echo "Please use start or stop as first argument"
        ;;
esac

[root@localhost ~]# chkconfig tomcat on

注:
别忘记了
systemctl daemon-reload
等级2表示:无网络连接的多用户命令行模式   
等级3表示:有网络连接的多用户命令行模式
等级5表示:带图形界面的多用户模式
15是启动优先级,95是停止优先级,优先级范围是0-100,数字越大,优先级越低。
---------------------end

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值