脚本在循环中执行程序并在超过时间限制时终止当前进程

时间:2011-04-23 20:30:01

标签: bash scripting

我有一个bash脚本在循环中执行一个程序,但是我想为程序的每次执行设置一个最大时间限制,即我只想在超过时间限制时取消当前执行但是我不要我想打破整个循环。

谢谢!

2 个答案:

答案 0 :(得分:1)

我的Ubuntu上有一个名为timeout的命令。你可以试试这个:

timeout 1s yes 

这将使过程是1秒后结束。

注意:使用此命令,也可以将信号指定为参数。

您还可以使用以下命令验证持续时间constaint是否得到遵守:

time timeout 3s yes

答案 1 :(得分:0)

这适用于任何Posix shell,包括bash ......

#!/bin/sh
while :; do
  echo starting command
  while :; do
    trap break SIGTERM
    sleep 5; kill $$  # 5 second timeout
    sleep 10 # replace this sleep with your real command
  done
  echo Command terminated, restarting...
done