一段时间后中止一个程序

时间:2010-09-02 16:54:09

标签: linux time abort

我正在尝试为程序开发一个测试用例,并且如果测试用例运行超过4秒,则希望测试用例失败。 怎么能在linux上完成? (我正在使用Ubuntu)

我知道我可以计算执行时间并使时间失效> 4,但这只是一个糟糕的方法。

谢谢!

3 个答案:

答案 0 :(得分:0)

(shell脚本解决方案) 在后台运行您的测试用例,获取它的PId,并在4秒后检查该进程是否仍在运行。

wait_seconds=4
interval_seconds=0.5
run_your_test_case &
pid=$!
max=`expr "$wait_seconds / $interval_seconds"`
for (( I=0; I<$max; I++ ));do
    if kill -0 $pid >/dev/null;then
       echo 'test failed'
    else
       echo 'test ok'
       break
    fi
    sleep $interval_seconds
done

答案 1 :(得分:0)

最终解决方案:

  1 ./slowprogram.sh >/dev/null &
  2 pid=$!
  3 exitbreak=0
  4 for c in {0..4}; do
  5         sleep 1
  6         kill -0 $pid 2>/dev/null
  7         if [ $? -ne 0 ] ;then
  8             exitbreak=1
  9             break
 10         fi
 11 done
 12 if  [ $exitbreak == 1 ]; then
 13         echo '[ OK ]'
 14 else
 15         echo '[FAIL]'
 16         kill -9 $pid 2>/dev/null 
 17 fi

答案 2 :(得分:0)

您也可以执行<command> & sleep 5 && kill ${!}

之类的操作