zoukankan      html  css  js  c++  java
  • 【积累】如何优雅关闭SpringBoot Web服务进程

    1.使用ps ef查出进程对应的pid。

    2.使用kill -15 pid结束进程。

    为什么不使用kill -9 pid,个人理解kill -15 pid更优雅,能在结束进程前执行spring容器清理工作。

    二者区别如下:

    SIGNKILL(9) 是立即杀死进程. 该信号不能被阻塞, 处理和忽略。
    SIGNTERM(15) 是正常退出进程,退出前可以被阻塞或回调处理。并且它是Linux缺省的程序中断信号。

    附一个shell,shell目的:查询进程名包含demo-0.0.1的进程id,查到后kill -15 pid结束进程。(更完善的做法,在kill -15 pid后sleep一段时间,再去查询,如果还能查到,再使用kill -9 强制杀掉进程)

    #! /bin/bash
    processName = `demo-0.0.1`
    echo $processName
    pid=$(ps -ef | grep $processName | grep -v grep | awk '{print $2}')
    if [ -n "$pid" ]
    then   
        kill -15 $pid
    fi
    

      

    测试如下:

    1.运行一个spingboot的demo项目。并使用@PreDestroy注解测试关闭spring容器后释放的一些逻辑。

    2.使用kill -15 pid 结束进程时,会执行destroy方法的逻辑。

     3.使用kill -9 pid 结束进程时,不会执行destroy方法的逻辑。

     

  • 相关阅读:
    hibernate持久化框架
    spring之AOP
    spring之bean
    spring之IOC
    pdf文件工具typora
    vsCode写vue项目一键生成.vue模板
    微信小程序瀑布流
    小程序接入阿拉丁
    小程序引入背景图片不显示问题解决
    Mac OS下使用rz和sz
  • 原文地址:https://www.cnblogs.com/GrapefruitTea/p/13034604.html
Copyright © 2011-2022 走看看