• centos7添加自定义服务到systemctl


    工作中部署的开源软件很多需要进到程序的bin目录执行start,每次都需要进入目录,而且不便于管理。将这类服务或者自开发的程序添加到systemctl管理起来就方便很多。

    一、systemd配置文件

    systemd 默认从目录/etc/systemd/system/读取配置文件,但里面存放的大部分文件都是符号链接,指向目录/usr/lib/systemd/system/,真正的脚本存放在这个目录。
    systemctl enable 命令用于在上面两个目录之间,建立符号链接关系。
    /usr/lib/systemd/下有系统(system)和用户(user)之分,需要开机启动的服务放在/usr/lib/systemd/system目录下.
    CentOS7的每一个服务以.service结尾,一般会分为3部分:[Unit]、[Service]和[Install]

    [Unit]部分主要是对这个服务的说明
    Description 用于描述服务
    After 用于描述服务类别

    [Service]是服务的一些具体运行参数的设置.
    Type=forking 是后台运行的形式,
    User=users 是设置服务运行的用户,
    Group=users 是设置服务运行的用户组,
    PIDFile 为存放PID的文件路径,
    ExecStart 为服务的具体运行命令,
    ExecReload 为重启命令,
    ExecStop 为停止命令,
    PrivateTmp=True 表示给服务分配独立的临时空间
    注意:[Service]部分的启动、重启、停止命令全部要求使用绝对路径,使用相对路径则会报错!

    [Install]是服务安装的相关设置,可设置为多用户

    二、示例

    添加厂商服务

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

    [Unit]
    Description=java tomcat project
    After=tomcat.service
    
    [Service]
    Type=forking
    User=users
    Group=users
    PIDFile=/usr/local/tomcat/tomcat.pid
    ExecStart=/usr/local/tomcat/bin/startup.sh
    ExecReload=
    ExecStop=/usr/local/tomcat/bin/shutdown.sh
    PrivateTmp=true
    
    [Install]
    WantedBy=multi-user.target
    
    chmod 754 /usr/lib/systemd/system/tomcat.service
    systemctl enable tomcat.service
    systemctl is-active tomcat.service
    systemctl status tomcat.service
    

    添加自开发服务

    和厂商服务一样只是自开发服务需要自己写好启动脚本和关闭脚本
    启动脚本
    vim /home/services/mytestsvr-service/start.sh

    #!/bin/sh
    export JAVA_HOME=/usr/local/java/jdk1.8.0_91
    export PATH=$JAVA_HOME/bin:$PATH
    
    cd /home/services/mytestsvr-service
    java -jar ./lib/mytestsvr-service.jar &
    echo $! > /var/run/mytestsvr-service.pid
    

    关闭脚本
    vim /home/services/mytestsvr-service/stop.sh

    #!/bin/sh
    PID=$(cat /var/run/mytestsvr-service.pid)
    kill -9 $PID
    

    systemctl脚本
    vim /usr/lib/systemd/system/**mytestsvr**.service

    [Unit]
    Description=the service description
    After=network.target
    
    [Service]
    Type=forking
    ExecStart=/home/services/mytestsvr-service/start.sh
    ExecStop=/home/services/mytestsvr-service/stop.sh
    
    [Install]
    WantedBy=multi-user.target
    
    chmod 754 /usr/lib/systemd/system/mytestsvr.service
    systemctl enable mytestsvr.service
    systemctl is-active mytestsvr.service
    systemctl status mytestsvr.service
    
  • 相关阅读:
    20180925-7 规格说明书-吉林市2日游
    第二周例行报告psp
    20180918-1 词频统计
    第一周例行报告psp
    第一周博客作业2018091-2
    20181009-9 每周例行报告
    20180925-1 每周例行报告
    20180925-7 规格说明书-吉林市2日游
    20180925-5 代码规范,结对要求
    20180925-4 单元测试,结对
  • 原文地址:https://www.cnblogs.com/zhaobowen/p/13383088.html
Copyright © 2020-2023  润新知