我如何杀死最后一个衍生的后台任务在linux?

例子:

doSomething
doAnotherThing
doB &
doC
doD
#kill doB
????

当前回答

这会杀死所有后台进程:

jobs -p | xargs kill -9

其他回答

下面的命令为您提供会话中所有后台进程的列表,以及pid。然后您可以使用它来终止进程。

jobs -l

使用示例:

$ sleep 300 &
$ jobs -l
[1]+ 31139 Running                 sleep 300 &
$ kill 31139
skill doB

Skill是kill命令的一个版本,允许您根据给定的标准选择一个或多个进程。

在bash中有一个特殊的变量:

kill $!

美元!扩展为最后一个在后台执行的进程的PID。

这是一个离题的答案,但是,对于那些感兴趣的人来说,它可能是有价值的。

在@John Kugelman的回答中,%与工作规格有关。 如何有效地找到它?使用less的&pattern命令,似乎man使用less寻呼机(不确定),在man bash中键入&%,然后键入Enter将只显示包含'%'的行,重新显示所有,键入&。然后输入。

使用killall命令:

killall taskname

更多信息和更高级的选项,键入“man killall”。