Bash:运行命令并在必要时等待(与超时相反)

时间:2016-07-24 15:04:27

标签: bash timeout

我有10秒的间隔。我想在shell中运行命令,然后等待完成10秒的间隔。如果命令超过10秒,则确定。

我正在寻找相当于" foo"功能如下:

>> foo 10 python myscript.py
  • 如果myscript.py需要2秒钟,那么shell应该等待8秒钟。
  • 如果myscript.py需要5秒钟,那么shell应该等待5秒钟。
  • 如果myscript.py需要12秒,那么shell不应该等待。它不应该超时myscript.py!

这是" foo"功能存在吗?

1 个答案:

答案 0 :(得分:0)

只需在后台运行sleep 10和您的脚本,然后等待两者完成。

python myscript.py &
sleep 10 &
wait

您可以定义一个shell函数来包装简单命令(一个命令名及其参数;没有管道,重定向,&&||等。)

foo () {
    t=$1
    shift
    "$@" &
    sleep "$t" &
    wait
}

foo 10 python myscript.py