我正在使用bash脚本运行java jar文件和psql命令。我使用timeout命令来停止任何长时间运行的命令。
TIMEOUT=2000
timeout $TIMEOUT java -jar myApp.jar
timeout $TIMEOUT java -jar myApp2.jar
timeout $TIMEOUT psql .....我需要为多少个命令超时保留一个标志。
如何检查超时命令是否达到限制并停止该命令?
发布于 2021-06-22 20:32:06
对于人工超时:
如果命令超时,并且未设置--
- status,则退出并返回状态124。否则,退出,状态为COMMAND。如果未指定信号,则在超时时发送术语信号。术语“信号”会终止任何不阻塞或捕获该信号的进程。可能有必要使用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 https://stackoverflow.com/questions/68083469
复制相似问题