CentOS7添加开机启动服务或脚本
方法一(rc.local)
改方式配置自动启动最为简单,只需要修改rc.local文件
由于在centos7中
/etc/rc.d/rc.local
的权限被降低了,所以需要赋予其可执行权chmod +x /etc/rc.d/rc.local
赋予脚本可执行权限
假设/
usr/local/app/start.sh
是你的脚本路径,给予执行权限chmod +x /usr/local/app/start.sh
打开
/etc/rc.d/rc.local
文件,在末尾增加如下内容/usr/local/app/start.sh
或者在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
将脚本移动到
/etc/rc.d/init.d
目录下mv /usr/local/app/start.sh /etc/rc.d/init.d
增加脚本的可执行权限
chmod +x /usr/local/app/start.sh
添加脚本到开机自动启动项目中
cd /etc/rc.d/init.d
service start.sh start 启动服务
chkconfig --add start.sh 添加为系统服务
chkconfig start.sh on 开机自启动
教程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添加开机启动服务或脚本的更多相关文章
- CentOS7添加开机启动服务/脚本(延用CentOS6方法)
一.添加开机自启服务 在centos7中添加开机自启服务非常方便,只需要两条命令(以Jenkins为例): systemctl enable jenkins.service #设置jenkins服务为 ...
- Centos7 添加开机启动服务
1.在/usr/lib/systemd/system/下创建服务脚本xxx.service,格式如下: [Unit] Description=Scrapyd After=syslog.target n ...
- centos7之添加开机启动服务/脚本
一.添加开机启动脚本 #!/bin/bash # THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES # # It is highly advisable to ...
- (转) CentOS 7添加开机启动服务/脚本
CentOS 7添加开机启动服务/脚本 原文:http://blog.csdn.net/wang123459/article/details/79063703 一.添加开机自启服务 在CentOS 7 ...
- Centos 下添加开机自启动服务和脚本【转】
最近刚玩Centos7的系统,跟Centos6还是很多方面有改变的,这里记录一下怎么在Centos7下添加开机自启动脚本和服务的方法. 1.添加开机自启服务 我这里以docker 服务为例,设置如下两 ...
- linux chkconfig添加开机启动服务
--add:增加所指定的系统服务,让chkconfig指令得以管理它,并同时在系统启动的叙述文件内增加相关数据: --del:删除所指定的系统服务,不再由chkconfig指令管理,并同时在系统启动的 ...
- ubuntu 添加开机启动服务
新建umpserver.service [Unit] Description=UMPServer After=syslog.target network.target remote-fs.target ...
- 【centos7】添加开机启动服务/脚本
一.添加开机自启服务 在centos7中添加开机自启服务非常方便,只需要两条命令(以Jenkins为例): systemctl enable jenkins.service #设置jenkins服务为 ...
- centos7如何添加开机启动服务/脚本
一.添加开机自启服务 在centos7中添加开机自启服务非常方便,只需要两条命令(以Jenkins为例): systemctl enable jenkins.service #设置jenkins服务为 ...
随机推荐
- Mockito 简介
Mockito 是一种 Java Mock 框架,主要是用来做 Mock 测试,它可以模拟任何 Spring 管理的 Bean.模拟方法的返回值.模拟抛出异常等等,在了解 Mockito 的具体用法之 ...
- this指针的用法和基本分析
当在不同的对象中采用this指针,就已经是在给它赋值了.对象各自的this指针指向各自对象的首地址,所以不同对象的this指针一定指向不同的内存地址. this 指针是由系统自动提供的指向对象的特殊指 ...
- 1.RabbitMQ
1.RabbitMq是什么? MQ全称为Message Queue,即消息队列, RabbitMQ是由erlang语言开发,基于AMQP(Advanced Message Queue 高级消息队 ...
- 设计模式学习笔记之看懂UML类图
什么是UML: UML(统一建模语言)是当今软件设计的标准图标式语言.对于一个软件系统而言,UML语言具有以下的功能:可视化功能.说明功能.建造功能和建文档功能. UML都包括什么类型的图: 使用案例 ...
- Mysql资料 mysqldump
目录 一.简介 备份过程 优缺点 命令使用 myisam引擎 二.安装 配置 日志 三.日常使用 备份全库 备份单个库(带建立库的语句) 备份单个库(不自动建立库) 备份表合集 从全备中恢复单个库 其 ...
- 【C语言】Socket发送HTTP-TCP请求,数据有字符串插入
问题描述: 场景:编写Socket接口,向LOKI发送POST请求查询数据 BUG发现位置:通过cJSON读取时间戳,发现被截断. 现象:通过read()去读取返回的数据,数据行中被插入字符:如下 c ...
- React-Router(一)
React-Router基础知识 import React from "react"; import { BrowserRouter as Router, Switch, Rout ...
- DKT模型及其TensorFlow实现(Deep knowledge tracing with Tensorflow)
今年2月15日,谷歌举办了首届TensorFlow Dev Summit,并且发布了TensorFlow 1.0 正式版. 3月18号,上海的谷歌开发者社区(GDG)组织了针对峰会的专场回顾活动.本文 ...
- mybatis注解版in查询、字符串判空模糊匹配 、批量插入、插入返回主键
IN查询 @Select({"<script> " + " select * "+ " from business_threat bt \ ...
- IDEA 修改之前保存的git地址的账号和密码
1.打开控制面板 快捷键 win+R,然后输入control,打开控制面板 2.用户账户 3.管理windows凭据 4.点击里面的git就可以修改了