zoukankan      html  css  js  c++  java
  • Linux 之centos7 制作服务自启动systemd

    摘要: - Centos7开机第一个程序从init完全换成了systemd这种启动方式,同centos 5 6已经是实质差别。systemd是靠管理unit的方式来控制开机服务,开机级别等功能。 在/usr/lib/systemd/system目录下包含了各种unit文件,有service后缀的服务unit,有target后缀的开机级别unit等,这里临时介绍关于service后缀的文件。

    • Centos7开机第一个程序从init完全换成了systemd这种启动方式,同centos 5 6已经是实质差别。systemd是靠管理unit的方式来控制开机服务,开机级别等功能。

    • 在/usr/lib/systemd/system目录下包含了各种unit文件,有service后缀的服务unit,有target后缀的开机级别unit等,这里临时介绍关于service后缀的文件。因为systemd在开机要想执行自启动,都是通过这些*.service 的unit控制的

    具体流程

    1. 在/usr/lib/systemd/system目录下新建一个 service-name.service的文件
    2. 以apache的httpd.service的unit为例解释
    [Unit]
    #定义描述
    Description=The Apache HTTP Server 
    #指定了在systemd在执行完那些target之后再启动该服务
    After=network.target remote-fs.target nss-lookup.target
    
    [Service]
    #定义Service 的运行type,一般是forking,就是后台运行
    Type=notify
    Environment=LANG=C
    #以下定义systemctl start |stop |reload *.service  的每个执行方法,具体命令#需要写绝对路径
    ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND
    ExecReload=/usr/sbin/httpd $OPTIONS -k graceful
    # Send SIGWINCH for graceful stop
    KillSignal=SIGWINCH
    KillMode=mixed
    #创建私有的内存临时空间
    PrivateTmp=true
    
    [Install]
    WantedBy=multi-user.target
    

    以下是我自己写的一个java项目,需要他开机自运行的service,systemd会帮我执行我写脚本,shell如下,仅供参考

    #!/bin/bash
    CMD=$1
    
    case $CMD in 
    -start)
    
            nohup java -jar /home/mobileoa/apps/shMediaManage-0.0.1.jar &> /home/mobileoa/apps/shm.log &
            ;;
    -stop)
    
            port=$(sudo netstat -tnlp | grep ':9099' |awk '{print $nf}' |awk -f'/' '{print $1}')
            sudo kill $port
            ;;
    
    -restart)
    
            port=$(sudo netstat -tnlp | grep ':9099' |awk '{print $nf}' |awk -f'/' '{print $1}')
            sudo kill $port
            nohup java -jar /home/mobileoa/apps/shMediaManage-0.0.1.jar &> /home/mobileoa/apps/shm.log &
            ;;
    *)
            echo "Usage: shMediaManager.sh -start | -stop | -restart .Or use systemctl start | stop | restart  MediaManager.service "
            ;;
    esac
    

    编辑.service文件,在Exec*下执行脚本,来启动关闭重启服务

    [UNIT]
    Description=Media wanager Service
    After=network.target
    
    [Service]
    Type=forking
    **ExecStart=/home/mobileoa/apps/shMediaManager.sh -start
    ExecReload=/home/mobileoa/apps/shMediaManager.sh -restart
    ExecStop=/home/mobileoa/apps/shMediaManager.sh -stop**
    PrivateTmp=True
    
    [Install]
    WantedBy=multi-user.target
    

    设置开机自起
    systemctl enable MediaManager.service
    会创建一个连接

  • 相关阅读:
    redis在java项目中的使用
    Nginx+Tomcat搭建高性能负载均衡集群
    Redis 数据类型
    MySQL 索引概述
    Spring boot 中的WebMvcConfigurerAdapter、WebMvcConfigurationSupport与WebMvcConfigurer区别
    DAO与DTO名词解释
    FindBugs-IDEA插件的使用
    Map 中有 HashMap、TreeMap、HashTable、LinkedHashMap,首先简单说一下他们之间的区别:
    javax.el.PropertyNotFoundException:
    内省(introspector)------>JavaBean
  • 原文地址:https://www.cnblogs.com/jzy996492849/p/6913333.html
Copyright © 2011-2022 走看看