服务启动超时控制

服务启动超时控制

问题描述:

服务有时存在等待很长时间起不来的情况,需要手动kill掉进程,然后再起一遍。

1 使用timeout指定命令运行的超时时间

timeout 30s java -jar while-1.0-SNAPSHOT.jar

脚本

#!/bin/bash
timeout 30s java -jar while-1.0-SNAPSHOT.jar
exit_pid=$? # 不在这里赋值的话,$?的值就会消失
echo "$? $exit_pid" # 这里的$?的值为0
if [[ $exit_pid == 124 ]];then
  echo "使用exit_pid变量接住退出值,$exit_pid" # 这里使用变量的值就可以正常使用timeout的退出值
fi

服务启动超时控制

日期输出是timeout 后面的jar包输出的,while.jar死循环输出当前的系统时间。

最后的test ? = 124是最后的输出

timeout 超过30s的时候,会把后面执行的jar包的进程给杀掉.可以在脚本运行时和运行后分别通过ps查看while进程是否存在。

ps -ef | grep while

2 使用timeout的退出值

服务启动超时控制

服务启动超时控制

timeout 10s java -jar while-1.0-SNAPSHOT.jar 超时退出的状态码 是124

timeout -s 9 10s java -jar while-1.0-SNAPSHOT.jar 超时退出的状态码 是137

timeout -s 15 10s java -jar while-1.0-SNAPSHOT.jar超时退出的状态码 是124,所以默认使用的是kill -15,退出超时的进程。

$? 需要在退出进程之后,立马使用变量接住这个值,否则之后 $? 的值就会消失。

使用$?的退出值

#!/bin/bash
timeout -s 15 10s java -jar while-1.0-SNAPSHOT.jar
exit_pid=$? # 不在这里赋值的话,$?的值就会消失
echo "$? $exit_pid" # 这里的$?的值为0
if [[ $exit_pid == 124 ]];then
  echo "使用exit_pid变量接住退出值,$exit_pid" # 这里使用变量的值就可以正常使用timeout的退出值
fi

服务启动超时控制

注意:下面的使用方式是不会产生作用的

#!/bin/bash
aaa=`timeout -s 15 10s java -jar while-1.0-SNAPSHOT.jar` # 试图用aaa接收timeout的退出值
echo "$aaa" # 没有获取到,是空
exit_pid=$?
echo "$? $exit_pid" # 只有这两个值 0 0,成功返回是0,0表示的echo命令执行成功
if [[ $exit_pid == 124 ]];then
  echo "使用exit_pid变量接住退出值,$exit_pid"
fi

服务启动超时控制

以上脚本经过验证。

原文链接:https://www.cnblogs.com/Sun-yuan/p/17353962.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:服务启动超时控制 - Python技术站

(0)
上一篇 2023年4月27日
下一篇 2023年4月27日

相关文章

  • JSP JavaBean的setProperty属性

    下面是关于JSP JavaBean的setProperty属性的完整攻略。 什么是JSP JavaBean的setProperty属性? JSP JavaBean的setProperty属性,是指在JSP页面中,对JavaBean的属性进行设置的操作。使用setProperty属性,可以在JSP页面中为JavaBean的属性赋值,并更新JavaBean中属性…

    Java 2023年6月15日
    00
  • spring注解 @PropertySource配置数据源全流程

    Spring注解 @PropertySource 用于加载指定的属性源,是Spring Framework 4.0版本之后提供的新特性。它允许我们从外部文件或环境变量中读取配置信息,灵活地管理我们的应用程序的数据源。 下面是使用 @PropertySource 配置数据源的完整流程: 引入依赖 在项目的 pom.xml 文件中添加以下依赖: <depe…

    Java 2023年6月2日
    00
  • java中File类应用遍历文件夹下所有文件

    下面是关于“java中File类应用遍历文件夹下所有文件”的攻略: 1. 使用递归法遍历文件夹下所有文件 如果需要遍历一个文件夹下所有文件,可以使用递归法来实现。首先使用File类获取到当前目录文件夹下的所有文件和文件夹,如果是文件就打印文件名,否则则递归调用本身遍历文件夹。 示例代码如下: import java.io.File; public class…

    Java 2023年5月19日
    00
  • jsp中为表格添加水平滚动条的方法

    当表格内容过长时,我们可能会希望在表格中添加水平滚动条以便于查看。下面是一种使用CSS和Javascript在JSP中添加水平滚动条的方法: 在JSP页面中,定义一个带有id属性的div元素作为表格容器,并设置一个合适的高度和宽度: <div id="table-container" style="height: 300p…

    Java 2023年6月15日
    00
  • struts2通过action返回json对象

    实现Struts2通过Action返回JSON对象,可以按照以下步骤进行操作: 步骤一:导入依赖 在项目的pom.xml中导入struts2-json-plugin依赖,以便能够支持JSON格式的数据: <dependency> <groupId>org.apache.struts</groupId> <artifa…

    Java 2023年5月20日
    00
  • Spring Security配置多个数据源并添加登录验证码的实例代码

    下面是详细讲解Spring Security配置多个数据源并添加登录验证码的实例代码的完整攻略: 什么是Spring Security? Spring Security是针对基于Spring的应用程序的安全框架,它提供了一组可以在应用程序中使用的安全服务,例如身份验证和授权。 Spring Security配置多个数据源并添加登录验证码的步骤 第一步:添加依…

    Java 2023年5月20日
    00
  • Java正则表达式之split()方法实例详解

    Java正则表达式之split()方法实例详解 简介 Java中的正则表达式是一种常见的字符串处理方式,可以使用它们来匹配、查找、替换或拆分字符串。其中,split()方法是一个非常常用的字符串拆分方法。本文将详细介绍split()方法及其应用。 split()方法参数 split()方法是String类的一个成员方法,用于将字符串根据传入的正则表达式拆分成…

    Java 2023年5月27日
    00
  • SpringBean和Controller实现动态注册与注销过程详细讲解

    下面是关于“SpringBean和Controller实现动态注册与注销过程详细讲解”的攻略。 什么是Spring Bean和Controller Spring Bean是指Spring框架中被容器管理的Java对象,它们被创建、组装和管理。Spring Bean是通过IoC(Inverse of Control,控制反转)的方式进行管理,即对象的创建由Sp…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部