支援了别的组维护shell脚本,遇到的脚本卡死的问题,我想到了做个超时处理,于是研究了一下超时处理timeout。
通过反复修改调试,发现它相当于java里的try语法中的finally,也就是timeout函数里的超时处理最终都是要执行的,只要waitfor的时间一到就执行。下面是我研究后的最终测试的代码以及运行结果。
timeout()
{
waitfor=5
command=$*
$command & # &是与后面的同时执行,&&先后执行
commandpid=$!
echo -----------------------------------$!
sleep $waitfor &&echo 44444444444 &&kill -9 $commandpid
}
timeout2(){
waitfor=2000 # 33分钟超时
command=$*
$command &
commandpid=$!
sleep $waitfor &&a
}
demo(){
echo 22222222222
sleep 1
}
a(){
echo 33333333333
sleep 1
}
#测试的函数
testDemo()
{
echo 11111111111
sleep 1
timeout2 demo
}
timeout testDemo
运行结果:
希望你也有所悟与收获。
完。