在Linux系统(CentOS7版本)下,如何实现某个服务的开机自启动?

【问题描述】

  在CentOS6及其之前的版本,可以使用service + chkconfig 命令,来实现服务的开机自启动;

  但在CentOS7版本系统上,之前的命令和配置都无效了。

【思路分析】

  在CentOS7版本系统上,配置文件的路径和命令都已经发生改变,需要重新进行配置。

【解决方案】

  本文还是以Eureka服务为例,来说明在CentOS7系统中如何设置该服务的开机自启动。

  1.在任意目录下,创建一个启动服务的shell脚本文件( 名字可以随意取,这里就以eurek.sh为例说明 );

  注意:脚本文件不要在 /etc/init.d 目录下,如果该目录下面有就删除掉,否则可能会产生冲突导致自启动无效。

  文件的内容如下: 仅供大家参考(你们写的启动服务的脚本要根据你们服务的实际命令和路径来写)

        #!/bin/bash

        # chkconfig:2345 10 90
        # description: eureka service ...
           start(){
             echo "-----------准备启动Eureka服务----------"

      # 进入到eureka的安装目录:
                 cd /opt/eureka/

        # 设置一下 linux系统的JAVA环境变量和Path路径:
                     export JAVA_HOME=/usr/lib/jvm/jdk1.8
                  export PATH=$JAVA_HOME/bin:$PATH
                  export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

     # 在后台启动 eureka服务:
             nohup java -jar com.xxxx-xxx-xxxxxx-0.0.1-SNAPSHOT.jar > nohup.out &
          echo "-----------完成启动Eureka服务------------"
        }
        case $1 in
        start):
        start
        ;;

       stop):
       echo "--------------------stop...-------------------"
        ;;
       esac

       exit 0

  说明:1) shell脚本编写完成后,请在机器上执行一下,确认该脚本是可以正常启动eureka的jar包服务的.

     2) 启动后, 可以通过 ps -ef|grep java(或服务) 命令来查看需要启动的java进程(或服务)是否已经正常启动.

  

  2. 在 /usr/lib/systemd/system 目录下面创建一个xxx.service的文件;

  注意:xxx.service文件不要放在 /etc/systemd/system 目录下,如果该目录下面有就删除,否则可能会产生冲突。

  文件的内容如下: 仅供参考

  [Unit]

    Description=The eureka.jar service
    After=network.target remote-fs.target nss-lookup.target

   [Service]

    Type=forking
    ExecStart=/opt/eureka/eureka.sh start
    ExecReload=/bin/kill -s HUP $MAINPID
    ExecStop=/opt/eureka/eureka.sh stop
    PrivateTmp=True

   [Install]

    WantedBy=multi-user.target

 3.  使用systemctl  enable  xxx.service 命令,把服务添加到linux系统的自启动服务列表中去;

 4.  使用systemctl  status  xxx.service 命令,查看是否添加成功。

原文地址:https://www.cnblogs.com/heyi-77/p/8717843.html