2016-04-29 61 views
0

我不想要運行一個外部程序(subl - 昇華文本)昇華文本在的某個時間點,我想運行它一定量的時間。我基本上需要啓動程序10秒,然後殺死它 - 多次 - 因爲它的安裝和更新過程。簡言之運行/重新啓動從終端

我該怎麼做?

回答

0

模擬它,我結束了在我的劇本

/usr/bin/subl 
SPID="$(ps -A | grep sublime_text | awk '{print $1}')" 
sleep 5 
kill "$SPID" 
unset "$SPID" 
+0

如果您有多個實例在運行,您最好捕獲返回的PID而不是搜索它:運行它:'/ usr/bin/subl'然後捕獲id:'SPID = $!' – yk11

+0

@ yk11崇高的文本似乎啓動編譯器在一個單獨的進程,使用'/ usr/bin/subl'產生的進程,否則我會只使用@ chepner的答案 – myol

2

使用timeout

timeout 5s <program> 

你也可以指定需要傳遞到結束的過程中信號。

timeout -s9 5s <program> 

(OR)

timeout --signal=KILL 5s <program> 

測試:

$ time timeout 5s sleep 40 

real 0m5.002s 
user 0m0.001s 
sys  0m0.001s 
+0

使用這種用'subl'(崇高文本)嘗試這種不似乎工作.. – myol

+0

與崇高的文字?但那是一位編輯,不是嗎? –

+0

已更新的答案。這是因爲'超時'發送'SIGTERM'信號,可能由'subl'處理。 – sat

2

你可能你的系統,它採用了標準的報警信號終止進程上有一個timeout命令。我從來都不明白爲什麼沒有shell作爲內置函數提供對此功能的訪問。如果你沒有timeout您的系統上,則可以用

my_program & pid=$! 
sleep 10 
kill "$pid"