如何用不同的执行时间杀死几个进程?
问题描述:
我有简单的bash脚本:如何用不同的执行时间杀死几个进程?
(睡眠5;回声 'A';睡眠100)&
(睡眠7;回波 'B';睡眠100)&
我想在第二次印刷'B'和第一次印刷'A'之后杀掉这两个过程。 (可能不是回声 - 第一次睡觉后可能是其他标签。)如何操作?
答
可能是这样
(sleep 5; echo 'A'; sleep 100) &
export Last=$!
(sleep 7; echo 'B'; kill-9 $Last; sleep 100) &
答
试试这个:
jobs -p | xargs kill
jobs -p
打印出所有后台作业的进程ID从这个shell窗口。
xargs
将它在stdin
上读取的内容传递给您提供的程序。
kill
将SIGTERM
发送给您提供的每个进程ID。
但是,请注意,这将杀死从此shell启动的所有后台作业,而不仅仅是最后两个作业。
如果你知道你想杀死只是最近启动的X作业,使用此:
jobs -p | tail -n [number of jobs] | xargs kill
你能不能解释一下?我不明白你想达到什么目的。 – Renaud 2011-03-23 18:16:50