zoukankan      html  css  js  c++  java
  • CentOS7添加开机启动服务或脚本

    方法一(rc.local)

        改方式配置自动启动最为简单,只需要修改rc.local文件

    1. 由于在centos7中/etc/rc.d/rc.local的权限被降低了,所以需要赋予其可执行权

      chmod +x /etc/rc.d/rc.local
    2. 赋予脚本可执行权限
      假设/usr/local/app/start.sh是你的脚本路径,给予执行权限

      chmod +x /usr/local/app/start.sh
    3. 打开/etc/rc.d/rc.local文件,在末尾增加如下内容

      /usr/local/app/start.sh
    4. 或者在rc.local加启动语句

         末尾添加 #su - root -c 'nohup java -Dloader.path="/usr/local/app/lib/"  -jar /usr/local/app/YunXiuAppMarketObj-0.0.1-SNAPSHOT-exec.jar>/usr/local/app/run.log 2>&1 &'(启动语句)

       示例 写入多个sh文件,切换root用户执行

           #!/bin/bash

           echo "su - root -c '/data/app/starteureka-1.sh & /data/app/startsystem-2.sh & /data/app/startleader-3.sh'" >> /etc/rc.d/rc.local

    方法二(chkconfig)

    说明

    /etc/init.d/etc/rc.d/init.d的软链接,可以通过ll命令查看。当Linux启动时,会寻找这些目录中的服务脚本,并根据脚本的运行级别确定不同的启动级别。

    教程1 chkconfig

    1. 将脚本移动到/etc/rc.d/init.d目录下

      mv  /usr/local/app/start.sh /etc/rc.d/init.d
    2. 增加脚本的可执行权限

      chmod +x  /usr/local/app/start.sh
    3. 添加脚本到开机自动启动项目中

      cd /etc/rc.d/init.d
      chkconfig --add start.sh 添加为系统服务
      chkconfig start.sh on 开机自启动 service start.sh start 启动服务

    教程2 通过service服务启动

    1)在/etc/inint.d目录下创建服务软连接

    #这里jar包的路径为绝对路径

    ln -s /home/service/test.jar /etc/inint.d/test

    2) 手动启动应用测试是否添加成功

     service test start

    3)  添加服务开机启动

    chkconfig --add test

    4)验证配置是否成功

    #查看服务是否已经添加到了列表中

    chkconfig --list

    #重启服务

    reboot

    注:以上配置是在通过spring-boot 搭建项目打成jar包后可以通过jar包名称直接运行,如:通过./test.jar直接启动项目。配置方式为在pom文件中添加如下配置

     

    <plugin>    

    <groupId>org.springframework.boot</groupId>    

    <artifactId>spring-boot-maven-plugin</artifactId>    

    <configuration>        

    <executable>true</executable>    

    </configuration>

    </plugin>

    关于chkconfig及liunx运行级别

    • chkconfig启动脚本规范
      在脚本开头加入下面内容:

      #!/bin/bash
      # chkconfig:   2345 90 10
      # description:  myservice

      说明:chkonfig后面是启动级别和优先级,description后面是服务描述。如上面脚本意思是,服务必须在运行级2,3,4,5下被启动或关闭,启动的优先级是90,停止的优先级是10。
      优先级范围是0-100,数字越大,优先级越低。

      注意:不添加以上内容的话添加启动项时会提示service myservice does not support chkconfig。

    • Linux启动优先级
      运行级别就是操作系统当前正在运行的功能级别。这个级别从0到6 ,具有不同的功能。这些级别在/etc/inittab文件里指定。这个文件是init程序寻找的主要文件,最先运行的服务是那些放在/etc/rc.d 目录下的文件。
      不同的运行级定义如下:(可以参考Linux里面的/etc/inittab)

      # 缺省的运行级,RHS用到的级别如下:
      0:关机
      1:单用户模式
      2:无网络支持的多用户模式
      3:有网络支持的多用户模式
      4:保留,未使用
      5:有网络支持有X-Window支持的多用户模式
      6:重新引导系统,即重启
      
      # 对各个运行级的详细解释:
      0 为停机,机器关闭。
      1 为单用户模式,就像Win9x下的安全模式类似。
      2  为多用户模式,但是没有NFS支持。 
      3  为完整的多用户模式,是标准的运行级。
      4 一般不用,在一些特殊情况下可以用它来做一些事情。例如在笔记本 电脑的电池用尽时,可以切换到这个模式来做一些设置。
      5  就是X11,进到X Window系统了。
      6  为重启,运行init 6机器就会重启。

    方法三(systemd)

    可以通过systemd添加自定义服务启动,具体步骤这里不再赘述。

    通过systemctl服务启动

    该方式将java应用的启动脚本托管给systemctl服务,通过systemctl的一系列命令配置应用的开机启动。

    1)进入到系统的/usr/lib/systemd/system目录下 

    cd /usr/lib/systemd/system

    2)添加.service文件

    vim test.service

    [Unit]

    #服务描述

    Description=test

    #当前服务在某个服务启动之后启动

    After=syslog.target network.target

    [Service]#systemctl进程运行的类型,有多种类型,默认为simple通过主进程启动,forking后台启动也就是systemctl主进程启动后会再生成一个子进程执行当前服务

    Type=forking

    #存放应用进程号的文件路径为绝对路径

    PIDFile=/home/service/pid

    #配置应用启动命令,应用的启动脚本路径必须为绝对路径

    ExecStart=/home/service/startup.sh start

    #配置应用的重启命令

    ExecReload=/home/service/startup.sh restart

    #配置应用的停止命令

    ExecStop=/home/digital/service/startup.sh stop

    #表示给应用分配独立的临时空间

    PrivateTmp=true

    #指定启动应用的用户

    User=test

    #指定用户的用户组

    Group=test    

    #等待应用的启动时间,单位为秒,0表示禁用,如果在配置的时间内收到启动完成的信号,服务被认为执行失败然后自动退出

    TimeoutStartSec=0

    # 杀掉指定进程,none表示没有进程会被杀掉,只执行stop操作

    KillMode=none

    [Install]

    WantedBy=multi-user.target

     在配置文件中添加了TimeoutStartSec和KillMode两个参数主要是为了防止java应用程序通过systemctl启动成功后进程会被自动干掉的问题,因为我在配置的过程中碰到一个问题就是在java应用程序已经成功启动一段时间后会进程会被莫名奇妙的干掉,尝试了多种方式,比如在配置文件中加上Restart=always参数发现应用会被不停地杀掉重启不能解决根本问题,最后发现配置文件中添加

    TimeoutStartSec=0和KillMode=none后问题解决。

    3)执行reload命令,使配置生效

    sudo systemctl daemon-reload

    4)  将应用的执行命令设置为开机自动启动

    # 设置开机启动

    sudo systemctl enabled test.service

    # 设置开机不启动

    sudo systemctl disabled test.service

    5)手动启动应用程序

    sudo systemctl start test.service

     如果启动异常可通过systemctl status查看应用启动的状态

    sudo systemctl status test.service

    纵有白头俱老意,奈何缘浅路芊芊.
  • 相关阅读:
    8进阶、M语言对Simulink模型的自动化操作及配置
    7进阶、Simulink回调函数
    6基础、Simulink模型保存为图片
    PCAN-USB
    Unix-Linux编程实践 学习点滴
    学一点吧
    VM中ubuntu已经正确配置了静态IP仍无法上网
    Linux在向磁盘新建文件的时候在系统层面的四步操作
    如何更有人缘?
    我的第一个javascript网页作业
  • 原文地址:https://www.cnblogs.com/hanby/p/14428387.html
Copyright © 2011-2022 走看看