2011-11-23 72 views
2

我有一系列「命令」(真正調用bash shell函數)來計算一些統計信息。每個命令都與其他所有命令無關,有時可能需要比想要的更多的時間。如何在腳本中運行「獨立」命令

到目前爲止,我有一個bash腳本來調用這些命令,一個接一個地執行。如果某些命令花費太多時間,並且按Ctrl + C鍵,則整個腳本會死亡(如預期的那樣)。 我發現,如果我把它們叫做圓括號(分支shell),就像(command1) ; (command2)和ctrl + C,而command1正在運行,那麼command2將在沒有問題的情況下運行。

以上情況適用,當我直接在終端上試用。但是如果我在劇本中這樣做,它不起作用。我想按Ctrl + C去整個腳本,並終止。

有什麼辦法可以幫助我想要什麼? bash shell的用法並不那麼嚴格,所以我很高興用python中的解決方案,例如,儘管bash中的一個是首選。

編輯:我想能夠以某種方式「取消」某些命令,其餘的則以後執行(一次一個),沒有問題。不要並行運行命令。

+0

你可以只並行運行所有進程嗎? (對每個命令附加'&',等同地,用'&'替換';') –

+0

我提到過我不會平行使用它們。他們都發出調用引擎,有時可能需要大量的內存。 –

回答

3

你想要什麼應該工作,如果你只是陷阱SIGINT。例如:

 
#!/bin/sh 

trap : 2 

cmd1 
cmd2 
cmd3 

當你打^ C,它會發送SIGINT的shell腳本和當前運行的進程(CMD1,CMD2或CMD3)。 cmd將會死亡,並且shell腳本將啓動下一個cmd。

+0

太棒了。那一定是吧:) –

相關問題