2011-03-23 51 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