我如何杀死最后一个衍生的后台任务在linux?
例子:
doSomething doAnotherThing doB & doC doD #kill doB ????
你需要它的pid…用"ps -A"找到它。
使用killall命令:
killall taskname
更多信息和更高级的选项,键入“man killall”。
在bash中有一个特殊的变量:
kill $!
美元!扩展为最后一个在后台执行的进程的PID。
skill doB
skill是kill命令的一个版本,它允许你根据给定的条件选择一个或多个进程。
skill
你可以通过工号来杀人。当你把一个任务放在后台时,你会看到如下内容:
$ ./script & [1] 35341
[1]是作业号,可以像这样引用:
[1]
$ kill %1 $ kill %% # Most recent background job
要查看作业号列表,使用jobs命令。更多来自man bash:
jobs
man bash
在shell中有许多方法来引用作业。字符%介绍了一个作业名称。工作编号n可能是 被称为%n。也可以使用用于开始作业的名称的前缀来引用作业,或者使用用于开始作业的子字符串 显示在其命令行中。例如,%ce指的是一个停止的ce作业。如果一个前缀匹配多个作业,则bash 报告错误。另一方面,使用%?ce引用任何在其命令行中包含字符串ce的作业。如果 子字符串匹配多个作业,bash报告错误。符号%%和%+指的是shell对当前作业的概念,当前作业是在前台停止或在后台启动的最后一个作业。以前的工作可能是 使用%-引用。在与作业相关的输出中(例如,jobs命令的输出),当前作业总是 用+标记,上一个作业用-标记。单个%(没有附带的作业规范)也引用 目前的工作。< / p >
%
n
%n
%ce
ce
%?ce
%%
%+
%-
+
-
下面的命令为您提供会话中所有后台进程的列表,以及pid。然后您可以使用它来终止进程。
jobs -l
使用示例:
$ sleep 300 & $ jobs -l [1]+ 31139 Running sleep 300 & $ kill 31139
这会杀死所有后台进程:
jobs -p | xargs kill -9
这是一个离题的答案,但是,对于那些感兴趣的人来说,它可能是有价值的。