我不想要運行一個外部程序(subl - 昇華文本)昇華文本在的某個時間點,我想運行它爲一定量的時間。我基本上需要啓動程序10秒,然後殺死它 - 多次 - 因爲它的安裝和更新過程。簡言之運行/重新啓動從終端
我該怎麼做?
我不想要運行一個外部程序(subl - 昇華文本)昇華文本在的某個時間點,我想運行它爲一定量的時間。我基本上需要啓動程序10秒,然後殺死它 - 多次 - 因爲它的安裝和更新過程。簡言之運行/重新啓動從終端
我該怎麼做?
模擬它,我結束了在我的劇本
/usr/bin/subl
SPID="$(ps -A | grep sublime_text | awk '{print $1}')"
sleep 5
kill "$SPID"
unset "$SPID"
使用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
你可能你的系統,它採用了標準的報警信號終止進程上有一個timeout
命令。我從來都不明白爲什麼沒有shell作爲內置函數提供對此功能的訪問。如果你沒有timeout
您的系統上,則可以用
my_program & pid=$!
sleep 10
kill "$pid"
如果您有多個實例在運行,您最好捕獲返回的PID而不是搜索它:運行它:'/ usr/bin/subl'然後捕獲id:'SPID = $!' – yk11
@ yk11崇高的文本似乎啓動編譯器在一個單獨的進程,使用'/ usr/bin/subl'產生的進程,否則我會只使用@ chepner的答案 – myol