服务启动超时控制

服务启动超时控制

问题描述:

服务有时存在等待很长时间起不来的情况,需要手动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日

相关文章

  • Python学习笔记整理3之输入输出、python eval函数

    Python 学习笔记整理3:输入输出、python eval函数 在本次学习笔记中,我们将会学习和回顾以下内容: Python中的输入输出 Python 中的文件读写 Python中的 eval函数 一、Python中的输入输出 在 Python 中,我们可以使用 print() 函数和 input() 函数来进行标准输入输出。 1. print() 函数…

    Java 2023年5月23日
    00
  • java枚举类的构造函数实例详解

    Java枚举类的构造函数实例详解 Java中的枚举类是一种特殊的数据类型,它可以用来定义常量集合。除了常见的静态枚举类常量定义之外,枚举类还可以定义方法、属性和构造函数。在本文中,我们详细讨论了Java枚举类的构造函数实例,包括构造函数的定义、使用示例以及注意事项等内容。 枚举类的构造函数定义 枚举类的构造函数可以用来初始化枚举常量的属性。枚举类的构造函数定…

    Java 2023年5月26日
    00
  • Java实现优先队列式广度优先搜索算法的示例代码

    实现优先队列式广度优先搜索(Priority Queue-based BFS)算法需要遵循以下几个步骤: Step 1:初始化 首先,我们需要初始化一个待访问节点的优先队列priority queue、一个已访问节点的哈希表visited map、以及图的邻接表adjacent list。将源节点加入到priority queue中,并将visited ma…

    Java 2023年5月19日
    00
  • GitLab+Jenkins+Maven+Tomcat 实现自动集成、打包、部署

    “GitLab+Jenkins+Maven+Tomcat 实现自动集成、打包、部署” 是一个使用开源工具链来实现软件开发流程自动化的典型例子。在本文档中,我们将详细介绍如何将这些工具整合起来,实现自动化集成、打包、部署。 准备工作 GitLab的安装 在你的服务器上安装 GitLab 这个基于 Git 的代码仓库管理系统,并确保它已经正确的配置好了 ssh …

    Java 2023年5月19日
    00
  • Java中的Random()函数及两种构造方法

    Java中的Random()函数及两种构造方法 在Java中,java.util.Random是一个用于生成伪随机数的类。它有两种构造方法,可以实现不同用途的随机数生成。 1. Random()函数 Random()函数是java.util.Random类的默认构造方法。该构造方法将当前时间戳作为种子,可以生成一个伪随机数: import java.util…

    Java 2023年5月26日
    00
  • Java源码跟踪阅读技巧【值得收藏】

    Java源码跟踪阅读技巧攻略 介绍 当我们学习和使用Java编程语言时,不可避免地需要阅读一些Java类库或框架的源代码。源代码阅读是提高我们自身编程能力和深入理解设计思路的重要手段。本攻略将分享几个常用的Java源码跟踪阅读技巧,帮助我们更好地阅读和理解Java源代码。 技巧一:使用IDE调试工具 大部分的Java IDE都提供了方便的代码调试工具,可以让…

    Java 2023年5月23日
    00
  • Spring Boot简介与快速搭建详细步骤

    SpringBoot简介与快速搭建详细步骤 什么是SpringBoot? SpringBoot是一个开源的Java框架,可用于构建可扩展的、高度可配置、轻量级的基于Spring的应用程序。它使用“使用约定优于配置”思想,目的是让程序员能够快速地搭建Spring程序,同时也降低了对Spring的配置需求。 SpringBoot的特点 基于Spring框架和其他…

    Java 2023年5月15日
    00
  • 浅谈SpringMVC之视图解析器(ViewResolver)

    下面我将为大家详细讲解 “浅谈SpringMVC之视图解析器(ViewResolver)”的完整攻略,包含以下几个方面: 什么是ViewResolver 在Spring MVC中,ViewResolver用于将逻辑视图解析为实际视图,即将Controller层中返回的逻辑视图名(可以是JSP、Velocity等模板引擎生成的视图名称)解析为实际的可视化视图,…

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