linux:杀死后台任务
我如何杀死在Linux最后衍生的后台任务?
例:
doSomething doAnotherThing doB & doC doD #kill doB ????
在bash中有一个特殊的variables:
kill $!
$! 扩展到在后台执行的最后一个进程的PID。
你可以通过工作号码杀人。 当你把任务放在后台时,你会看到如下的东西:
$ ./script & [1] 35341
那[1]
是工作号码,可以被引用如:
$ kill %1 $ kill %% # Most recent background job
要查看作业编号列表,请使用jobs
命令。 更多来自man bash
:
有很多方法可以在shell中引用作业。 字符
%
引入了一个作业名称。 工作号码n
可以被称为%n
。 作业也可以使用用于启动它的名称的前缀或使用出现在其命令行中的子string来引用。 例如,%ce
指停止的ce
作业。 如果前缀匹配多个作业,则bash会报告错误。 另一方面,使用%?ce
是指在命令行中包含stringce
任何作业。 如果子string匹配多个作业,则bash会报告错误。 符号%%
和%+
引用当前作业的shell的概念,这是最后一个作业在前台或后台开始时停止的作业。 以前的作业可能使用%-
引用。 在与作业相关的输出中(例如,作业命令的输出),当前作业始终标记为+
,而前一个作业为-
。 单一的%
(没有附带的工作规范)也是指当前的工作。
以下命令为您提供了会话中所有后台进程以及pid的列表。 然后你可以用它来杀死这个进程。
jobs -l
用法示例:
$ sleep 300 & $ jobs -l [1]+ 31139 Running sleep 300 & $ kill 31139
这应该杀死所有后台进程:
jobs -p | xargs kill -9
skill doB
skill
是kill命令的一个版本,它允许您根据给定条件select一个或多个进程。
你需要它的PID …使用“ps -A”来find它。
这是一个没有主题的答案,但对于那些有兴趣的人来说,这可能是有价值的。
正如约翰·库格曼(John Kugelman)的回答,%与工作规范有关。 如何有效地find那个? 使用less的&模式命令 ,似乎man使用较less的寻呼机(不太确定),在男人bashtypes&%,然后键入回车将只显示行包含'%',重新显示所有,键入&。 然后input。
只需使用killall命令:
killall任务名称
有关更多信息和更高级的选项,请键入“man killall”。