方法一(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

CentOS7添加开机启动服务或脚本的更多相关文章

  1. CentOS7添加开机启动服务/脚本(延用CentOS6方法)

    一.添加开机自启服务 在centos7中添加开机自启服务非常方便,只需要两条命令(以Jenkins为例): systemctl enable jenkins.service #设置jenkins服务为 ...

  2. Centos7 添加开机启动服务

    1.在/usr/lib/systemd/system/下创建服务脚本xxx.service,格式如下: [Unit] Description=Scrapyd After=syslog.target n ...

  3. centos7之添加开机启动服务/脚本

    一.添加开机启动脚本 #!/bin/bash # THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES # # It is highly advisable to ...

  4. (转) CentOS 7添加开机启动服务/脚本

    CentOS 7添加开机启动服务/脚本 原文:http://blog.csdn.net/wang123459/article/details/79063703 一.添加开机自启服务 在CentOS 7 ...

  5. Centos 下添加开机自启动服务和脚本【转】

    最近刚玩Centos7的系统,跟Centos6还是很多方面有改变的,这里记录一下怎么在Centos7下添加开机自启动脚本和服务的方法. 1.添加开机自启服务 我这里以docker 服务为例,设置如下两 ...

  6. linux chkconfig添加开机启动服务

    --add:增加所指定的系统服务,让chkconfig指令得以管理它,并同时在系统启动的叙述文件内增加相关数据: --del:删除所指定的系统服务,不再由chkconfig指令管理,并同时在系统启动的 ...

  7. ubuntu 添加开机启动服务

    新建umpserver.service [Unit] Description=UMPServer After=syslog.target network.target remote-fs.target ...

  8. 【centos7】添加开机启动服务/脚本

    一.添加开机自启服务 在centos7中添加开机自启服务非常方便,只需要两条命令(以Jenkins为例): systemctl enable jenkins.service #设置jenkins服务为 ...

  9. centos7如何添加开机启动服务/脚本

    一.添加开机自启服务 在centos7中添加开机自启服务非常方便,只需要两条命令(以Jenkins为例): systemctl enable jenkins.service #设置jenkins服务为 ...

随机推荐

  1. 2、Spring的IOC标签介绍以及实例

    一.Spring_ioc配置文件bean标签介绍 1. bean标签 名称:bean 类型:标签 归属:beans标签 作用:定义spring中的资源,受此标签定义的资源将受到spring控制 格式: ...

  2. ORA-31633:unable to create master table "DP.SYS_EXPORT_FULL_11" ORA-01658

    问题描述:在进行数据泵进行数据库备份的时候,但是导出命令报错,环境是19C 4节点的rac 一体机.目前磁盘空间需要清理,清理之前先备份一下数据库 ORA-31626:job does not exi ...

  3. Linux目录基础

    一.解析映射文件 本地的DNS Linux: /etc/hosts Windows:C:\Windows\System32\drivers\etc\hosts 二.磁盘挂载文件 /etc/fstab ...

  4. idea秘钥集成docker

    目录 docker开启远程访问 docker安全远程访问 服务端 客户端 修改权限 修改docker配置 IDEA集成docker部署项目 1. 新建DockerFile,配置启动服务 2. Dock ...

  5. 甘特图中与任务有关的操作(Project)

    <Project2016 企业项目管理实践>张会斌 董方好 编著 任务建好了不是马上就没事了,后面还有各种事,比如像我这种粗心的,冷不丁就会冒出个"通假字"什么的,难道 ...

  6. CF1059A Cashier 题解

    Content 定义一天长度为 \(L\),每次休息的时间为 \(a\).一天会有 \(n\) 个客人到访,第 \(i\) 个客人会在 \(t_i\) 的时刻到访,会停留 \(l_i\) 的时间.只有 ...

  7. CF1454B Unique Bid Auction 题解

    Content 给定一个长度为 \(n\) 的数列 \(\{a_i\}_{i=1}^n\),请找出在数列中仅出现一次的最小的数的位置. 数据范围:\(t\) 组询问,\(1\leqslant t\le ...

  8. 大型网站高可用架构之CAP原理

    在讨论高可用数据服务架构之前,必须先讨论的一个话题是,为了保证数据的高可用,网站通常会牺牲另一个也很重要的指标:数据一致性. CAP原理认为,一个提供数据服务的存储系统无法同时满足数据一致性.数据可用 ...

  9. Vue2使用Axios发起请求教程详细

    当你看到该文章时希望你已知晓什么是跨域请求以及跨域请求的处理,本文不会赘述 本文后台基于Springboot2.3进行搭建,Controller中不会写任何业务逻辑仅用于配合前端调试 Controll ...

  10. JAVA连接MySQ报错:Caused by: javax.net.ssl.SSLException: Received fatal alert: protocol_version

    Caused by: javax.net.ssl.SSLException: Received fatal alert: protocol_version at sun.security.ssl.Al ...