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
    会创建一个连接

  • 相关阅读:
    IDEA创建maven项目
    Error:java:错误:不支持发行版本 5(或写着其他版本的~)
    IDEA配置maven
    IDEA、maven3.6.3安装、环境配置(windows10)
    MySQL(版本8.0.19)服务的启动/停止、登录/登出、修改密码
    Struts2表单提交的中文字符数据用hibernate存储在数据库中是乱码的问题。
    (异常分析)Dispatcher initialization failed Caused by: Action class [*] not found
    (异常分析)实例化Configuration 的时候提示:Cannot instantiate the type Configuration
    (转)(异常分析) org.hibernate.MappingException: entity class not found
    (转)not found while looking for property错误
  • 原文地址:https://www.cnblogs.com/jzy996492849/p/6913333.html
Copyright © 2011-2022 走看看