2012-05-21 78 views
0

我正在尋找一種方法來運行x秒的腳本,並且仍然有可能在這些x秒之前中斷腳本。讓程序運行x秒但保留控制權-C

如果我沒有必要的能力,按Ctrl-C我叉保持運行腳本中寫

./my_script & 
sleep $x 
kill $! 

但在這裏,如果我按Ctrl-C。

我還挺懂得,如果在一個子shell啓動終止該腳本:

trap "echo sub-script terminated" INT 
(./my_script) 
trap - INT 

,但我不知道該怎麼轉,要叉子(我沒有得到明確兩者之間的差異我不得不承認的概念)。

編輯:我想知道如何隨身攜帶的解決方案順便說一句,如果你可以提到,在你的答案中,這對我來說很有價值。

+0

@ the_person_who_voted_the_question_as_off-topic:'°_o' – m09

+0

也許您可以使用ENV變量作爲標誌。因此,在腳本中查找該標誌,如果它是真的,則退出。當然,當你捕捉Ctrl-C信號時,你可以切換標誌。 – ykatchou

+0

我覺得這個問題必須有一個更清晰的解決方案:( – m09

回答

1
timeout $x ./my_script 

如果你有一個合理的新的GNU Coreutils的,timeout包括那裏。在此之前,曾經存在一些來自不同來源的略有不兼容的變體(我在大多數地方使用的變體來自Postfix的原始IIRC分佈)。

如果你的發行版沒有timeout,那裏有很多shell和Perl的黑客入侵。

+0

讚賞! :) – m09