zoukankan      html  css  js  c++  java
  • 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
    
  • 相关阅读:
    WPF 之Converter
    silverlight中 ComboBox绑定数据库,并获取当前选定值
    ComboBox联动 (AJAX BS实现)
    [推荐]Silverlight 2 开发者海报
    非常精彩的Silverlight 2控件样式
    一步一步学Silverlight 2系列文章
    POSIX 线程详解(经典必看)
    嵌入式 vlc从接收到数据流到播放视频的过程分析(经典)
    OpenGL ES教程系列(经典合集)
    Audio Queue Services Programming Guide(音频队列服务编程指南)
  • 原文地址:https://www.cnblogs.com/zhaobowen/p/13383088.html
Copyright © 2011-2022 走看看