如何用不同的执行时间杀死几个进程?

时间:2011-03-23 18:13:17

标签: bash

我有简单的bash脚本:

  

(睡5;回音'A';睡100)&

     

(睡7;回声'B';睡100)&

我希望在第二个流程打印'B'和第一个流程打印'A'后终止这两个流程。 (可能不是回声 - 第一次睡觉后可能是其他标签。)怎么做?

2 个答案:

答案 0 :(得分:0)

可能是这样的

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

答案 1 :(得分:0)

试试这个:

jobs -p | xargs kill

jobs -p从此shell窗口打印所有后台作业的进程ID。

xargsstdin上的内容传递给您提供的程序。

kill向您提供的每个进程ID发送SIGTERM

但请注意,这会终止从此shell启动的所有后台作业,而不仅仅是最后两个。

如果您知道要杀死最近启动的X作业,请使用:

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