首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何检查系统是否超时?

如何检查系统是否超时?
EN

Stack Overflow用户
提问于 2021-06-22 20:22:00
回答 1查看 56关注 0票数 1

我正在使用bash脚本运行java jar文件和psql命令。我使用timeout命令来停止任何长时间运行的命令。

代码语言:javascript
运行
复制
    TIMEOUT=2000
    timeout $TIMEOUT java -jar myApp.jar
    timeout $TIMEOUT java -jar myApp2.jar     
    timeout $TIMEOUT psql .....

我需要为多少个命令超时保留一个标志。

如何检查超时命令是否达到限制并停止该命令?

EN

回答 1

Stack Overflow用户

发布于 2021-06-22 20:32:06

对于人工超时:

如果命令超时,并且未设置--

- status,则退出并返回状态124。否则,退出,状态为COMMAND。如果未指定信号,则在超时时发送术语信号。术语“信号”会终止任何不阻塞或捕获该信号的进程。可能有必要使用KILL (9)信号,因为该信号不能被捕获,在这种情况下,退出状态是128+9而不是124。

您必须测试返回值

代码语言:javascript
运行
复制
timeout $TIMEOUT java -jar myApp.jar
CODE=$?
if [ $CODE -eq 124 ] || [ $CODE -eq 133] 
then
    echo "command xxx take more than $TIMEOUT to run"
fi

使用bash,您可以为此创建一个函数:

代码语言:javascript
运行
复制
my_timeout () {
    TIMEOUT=$0
    shift
    timeout $TIMEOUT $*
    CODE=$?
    if [ $CODE -eq 124 ] || [ $CODE -eq 133] 
    then
        echo "command $* take more than $TIMEOUT to run"
    fi    
}


TIMEOUT=2000
my_timeout $TIMEOUT java -jar myApp.jar
my_timeout $TIMEOUT java -jar myApp2.jar  
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68083469

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档