如何解决如何检查系统是否达到超时?
我正在使用 bash 脚本运行 java jar 文件和 psql 命令。我正在使用 timeout 命令来停止任何长时间运行的命令。
TIMEOUT=2000
timeout $TIMEOUT java -jar myApp.jar
timeout $TIMEOUT java -jar myApp2.jar
timeout $TIMEOUT psql .....
我需要保留有多少命令超时的标志。
如何检查 timeout 命令是否达到限制并停止命令?
解决方法
对于人员超时:
如果命令超时,并且没有设置--preserve-status,则以状态124退出。否则以COMMAND状态退出。如果未指定信号,则在超时时发送 TERM 信号。 TERM 信号会杀死任何不阻塞或捕获该信号的进程。可能需要使用 KILL(9) 信号,因为无法捕捉到该信号,在这种情况下,退出状态为 128+9 而不是 124。
你必须测试返回值
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
,您可以为此创建一个函数:
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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。