Linux 开机自动启应用服务

背景

运维同学希望服务器若遇故障重启时,可以自动启动把系统应用服务,不需要人为拉起。我们服务器是Linux系统,网上这类文章也比较多,今天下午抽空做了个实验,可行,记录一下,以备后绪查找。我这边用的是systemctl方式做为开机自启

自定义应用服务启动脚本

我们是boot项目,由于是测试环境,所以里面结构有点乱如下图所示
在这里插入图片描述
以下是a_start.sh和a_stop.sh自定义启动脚本

(1) a_start.sh

#!/bin/bash

#nohup java -jar api.jar --spring.config.location=file:application_a.yml 1>/dev/null 2>/dev/null &

#-XX:+PrintGC 输出GC日志
#-XX:+PrintGCDetails 输出GC的详细日志
#-XX:+PrintGCTimeStamps 输出GC的时间戳(以基准时间的形式)
#-XX:+PrintGCDateStamps 输出GC的时间戳(以日期的形式,如 2013-05-04T21:53:59.234+0800)
#-XX:+PrintHeapAtGC 在进行GC的前后打印出堆的信息
#-Xloggc:../logs/gc.log 日志文件的输出路径
 cd /opt/supervison/ && nohup java -jar  -XX:+PrintGCDateStamps  -XX:+PrintGCDetails -Xloggc:./gc.log api.jar --spring.config.location=file:application_a.yml > api.log  2>&1 &

(2)a_stop.sh
#!/bin/bash
pid=`ps -ef | grep java | grep api  | awk '{ print $2}'`
kill -9 $pid 1 > /dev/null 2> /dev/null

以上两个脚本编写完后保存退出


定义service服务

(1)  vi /etc/systemd/system/supervison.service

(2)  给启动服务增加内容如下所示:


[Unit]
Description=Supervisor process control system for Linux
Documentation=http://supervisord.org
After=network.target

[Service]
**Type=forking
ExecStart= /opt/supervison/a_start.sh
ExecStop= /opt/supervison/a_stop.sh**
KillMode=process
Restart=on-failure
RestartSec=50s

[Install]
WantedBy=multi-user.target
(3) 保存服务并退出执行以下命令让以上服务生效

systemctl enable supervison.service

注:看是否生效的命令可以用以下: systemctl list-unit-files --type=service |grep supervison,如下图所示:
(4) 可以通过systemctl start /stop supervison.service 启动/停目服务了,也可以reboot重启服务器看应用是否能被成功拉起,经测试OK了

注意事项说明

(1) 注意a_start.sh 里面启动的jar的路径,不然通这service启动无法成功启动
(2) 注意a_start.sh 权限,给出chmod 777 ,否则调用有权限问题
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值