防止bash脚本挂起

时间:2013-06-14 13:33:36

标签: linux bash

假设我有以下代码的bash-script:

function test() {
  some_code
  ...
  make
  some_code
}

test
some_other_code

test()可能包含任何可能运行得不合理的代码。

我试图使用类似的东西:

function test() {
  cd $WORK_FOLDER
  make
}

run_timeout()
{
local timeout=$1
$2 &
local pid=$!
while ps $pid >/dev/null && [ $timeout -ne 0 ]; do
  sleep 1
  let timeout--  
done  
kill -9 $pid 2>/dev/null && echo "Process $pid killed because executed too long"
}

run_timeout 15 "test"
run_timeout 5 "test"

make 仍在预计的时间后运行。

有任何建议如何解决这个问题?

是否有任何阻止bash脚本挂起的技术?

1 个答案:

答案 0 :(得分:0)

我想2美元和2美元你在哪里运行长功能吧?我有同样的问题和一些时间,取决于你将有多个过程的功能...我不知道我的解决方案是否是最好的方法,但它对我有用。

改变:

$2 &

for:

awk '{system($2)}' &
这样,pid = $!会给你awk pid并通过杀死awk,你杀了整个过程的东西。