关键词

服务启动超时控制

服务启动超时控制

问题描述:

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

2 使用timeout的退出值

使用$?的退出值

#!/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

本文链接:http://task.lmcjl.com/news/13114.html

展开阅读全文