2011-03-23 95 views
0

我有簡單的bash腳本:如何用不同的執行時間殺死幾個進程?

(睡眠5;回聲 'A';睡眠100)&

(睡眠7;回波 'B';睡眠100)&

我想在第二次印刷'B'和第一次印刷'A'之後殺掉這兩個過程。 (可能不是回聲 - 第一次睡覺後可能是其他標籤。)如何操作?

+3

你能不能解釋一下?我不明白你想達到什麼目的。 – Renaud 2011-03-23 18:16:50

回答

0

可能是這樣

(sleep 5; echo 'A'; sleep 100) & 
export Last=$! 
(sleep 7; echo 'B'; kill-9 $Last; sleep 100) & 
0

試試這個:

jobs -p | xargs kill 

jobs -p打印出所有後臺作業的進程ID從這個shell窗口。

xargs將它在stdin上讀取的內容傳遞給您提供的程序。

killSIGTERM發送給您提供的每個進程ID。

但是,請注意,這將殺死從此shell啓動的所有後臺作業,而不僅僅是最後兩個作業。

如果你知道你想殺死只是最近啓動的X作業,使用此:

jobs -p | tail -n [number of jobs] | xargs kill