我想在一段時間后自動終止命令。我想到了這樣的界面:% constrain 300 ./foo args它將與“ args”一起運(yùn)行“ ./foo”,但如果它在5分鐘后仍在運(yùn)行,則會自動將其殺死。將想法推廣到其他約束可能很有用,例如,如果進(jìn)程使用過多的內(nèi)存,則自動殺死該進(jìn)程。是否有現(xiàn)有的工具可以做到這一點(diǎn),或者有人編寫過這樣的東西?補(bǔ)充:喬納森(Jonathan)的解決方案正是我所想到的,它在Linux上像魅惑一樣工作,但是我無法在Mac OSX上使用它。我擺脫了SIGRTMIN,它可以很好地進(jìn)行編譯,但是信號只是不會發(fā)送到子進(jìn)程。有人知道如何在Mac上執(zhí)行此操作嗎?[添加:請注意,喬納森(Jonathan)提供了可在Mac和其他地方使用的更新。
3 回答

桃花長相依
TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超8個贊
也許我不明白這個問題,但這聽起來直接可行,至少在bash中是這樣:
( /path/to/slow command with options ) & sleep 5 ; kill $!
這將在括號內(nèi)運(yùn)行第一個命令五秒鐘,然后將其殺死。整個操作是同步運(yùn)行的,即,在忙于等待緩慢的命令時,您將無法使用您的shell。如果那不是您想要的,應(yīng)該可以添加另一個&。
該$!變量是Bash內(nèi)置變量,包含最近啟動的子Shell的進(jìn)程ID。重要的是不要在括號內(nèi)包含&,否則將丟失進(jìn)程ID。
- 3 回答
- 0 關(guān)注
- 834 瀏覽
添加回答
舉報
0/150
提交
取消