2016-07-24 43 views
1

我有10秒的時間間隔。我想在一個shell中運行一個命令,然後等待完成10秒的時間間隔。如果這些命令需要10秒以上,那麼確定。Bash:運行命令並在必要時等待(與超時相反)

我要尋找一個相當於下面 「foo」 的功能:

>> foo 10 python myscript.py 
  • 如果myscript.py需要2秒,外殼應afterwhile等待8秒。
  • 如果myscript.py需要5秒鐘,那麼shell會在5秒後等待。
  • 如果myscript.py需要12秒鐘,那麼shell不應該等待。它不應該超時myscript.py!

這個「foo」函數是否存在?

+0

我寫了一個答案一個類似的問題在這裏:http://stackoverflow.com/a/41108021/771740 – JonatasTeixeira

+0

我在這裏回答一個類似的問題:http://stackoverflow.com/a/41108021/771740 – JonatasTeixeira

回答

0

只需在後臺運行sleep 10和您的腳本,然後等待兩者都完成。

python myscript.py & 
sleep 10 & 
wait 

您可以定義一個shell函數來包裝簡單命令(命令名稱及其參數,沒有管道,重定向,&&||等)

foo() { 
    t=$1 
    shift 
    "[email protected]" & 
    sleep "$t" & 
    wait 
} 

foo 10 python myscript.py