springboot服务优雅关机脚本(在停止服务的命令发出后将执行完正在运行的进程)外加检测进程死掉自...

栏目: Java · 发布时间: 5年前

内容简介:自从用上springboot开发项目后,服务都是打jar包然后通过比如下面这个脚本就是启动pybbs的脚本,加载 prod 配置文件,启动后在后台运行,将日志写在jar包目录下的 log.file 里相应的关机脚本也是从网上找的,不知是哪个大佬写的,在网上能找到的关机脚本基本上都长下面这个样

自从用上springboot开发项目后,服务都是打jar包然后通过 java -jar xx.jar 的方式来启动的

比如下面这个脚本就是启动pybbs的脚本,加载 prod 配置文件,启动后在后台运行,将日志写在jar包目录下的 log.file 里

#!/bin/bash -e
java -jar pybbs.jar --spring.profiles.active=prod > log.file 2>&1 &

相应的关机脚本也是从网上找的,不知是哪个大佬写的,在网上能找到的关机脚本基本上都长下面这个样

#!/bin/bash -e
ps -ef | grep pybbs.jar | grep -v grep | cut -c 9-15 | xargs kill -s 9

可以看到在命令最后加上了个参数 -s 9 在 kill 命令中 -9 是强制kill的意思,不管服务有没有正在运行的进程,它都直接给杀掉

要做到优雅关机,只需要把后面的 -s 9 删掉就好了,不带 -9 参数,它会等待进程运行完正在执行的任务,一直到没有正在运行的任务的时候再杀掉

不过这货也有个不好的地方,当项目中用到了定时器,就有可能会出现杀不掉的现象,到时还是要用上-9参数

原接文链: https://tomoya92.github.io/2019/05/31/spring-boot-gracefully-shutdown/

当然 spring-boot 框架也自带了一个监听服务,如果服务在启动状态,发送一个POST请求就可以优雅的停机,感觉还是没有脚本来的直接

服务器上一个服务死没死,死了之后要重启一般都是人主动发现然后手动去启动的,下面这个脚本可以通过检测然后实现服务死掉自动启动

#!/bin/bash -e
ps -ef | grep pybbs.jar | grep -v grep
if [$? -ne 0]
then
  echo "server is stoped! start..."
  java -jar pybbs.jar --spring.profiles.active=prod > log.file 2>&1 &
else
  echo "server is running..."
fi

然后可以将这个脚本放在系统的定时任务里执行,关于定时任务的用法可以查看 Ubuntu里开机自启动和定时任务cron

注意:如果用定时任务时,在被执行的脚本里如果有通过export导入的命令的话,就要写上全路径,因为在系统启动的时候,定时任务不会去提前加载环境变量

原文链接:


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Web界面设计

Web界面设计

Bill Scott、Theresa Neil / 李松峰 / 电子工业出版社 / 2009年7月 / 80.00元

当前的Web已经进入崭新的时代!本书涵盖了在基于独一无二的Web环境下、在创建丰富体验的过程中设计Web界面的最佳实践、模式和原理。UI专家Bill Scott和Theresa Neil在他们多年实践经验和不懈探索的基础上,总结提炼出了Web界面设计的六大原理——直截了当、简化交互、足不出户、提供邀请、使用变换和即时反应,并以这六大原理为依托,以当今Web上各类开风气之先的流行网站为示例,向读者展......一起来看看 《Web界面设计》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换