如何在Linux中终止最后生成的后台任务?示例:
doSomething doAnotherThing doB & doC doD #kill doB ????
du7egjpx1#
你可以通过工号来杀人。当你把一个任务放到后台时,你会看到类似这样的东西:
$ ./script & [1] 35341
[1]是工单号,可以引用如下:
[1]
$ kill %1 $ kill %% # Most recent background job
要查看作业编号列表,请使用jobs命令。man bash提供的更多信息:在shell中引用作业的方法有多种。字符%引入作业名。作业号n可以称为%n。还可以使用用于启动作业的名称前缀或使用出现在其命令行中的子字符串来引用作业。例如,%ce是指已停止的ce作业。如果前缀与多个作业匹配,则bash会报告错误。另一方面,使用%?ce是指在其命令行中包含字符串ce的任何作业。如果子字符串与多个作业匹配,bash报告一个错误。符号%%和%+表示shell对当前作业的概念,当前作业是最后一个在前台停止或在后台启动的作业。可以使用%-引用上一个作业。在与作业有关的输出中(例如,作业命令的输出),则当前作业始终标记为+,前一作业标记为-。单个%(没有附带的作业规范)也引用当前作业。
jobs
man bash
%
n
%n
%ce
ce
%?ce
%%
%+
%-
+
-
0md85ypi2#
在Bash中有一个特殊的变量:
kill $!
$!扩展到后台执行的最后一个进程的PID。
ncgqoxb03#
下面的命令提供了会话中所有后台进程的列表,沿着pid,然后可以使用它来终止进程。
jobs -l
示例用法:
$ sleep 300 & $ jobs -l [1]+ 31139 Running sleep 300 & $ kill 31139
fykwrbwg4#
这将终止所有后台进程:
jobs -p | xargs kill -9
igetnqfo5#
skill doB
skill是kill命令的一个版本,允许您根据给定的条件选择一个或多个进程。
skill
vawmfj5a6#
您需要它的pid...使用“ps-A”查找它。
9bfwbjaz7#
正如John Kugelman的回答,%与作业规范有关。
如何有效地找到它?使用less的&pattern命令。man似乎使用了 less 分页器(我不确定)。在“man”Bash中,键入&%,然后键入Enter。它将只显示包含“%”的行。要重新显示所有行,键入&,然后键入Enter。
klr1opcd8#
只需使用killall命令:全部清除任务名要获得更多信息和更高级的选项,请键入“man killall”。
8条答案
按热度按时间du7egjpx1#
你可以通过工号来杀人。当你把一个任务放到后台时,你会看到类似这样的东西:
[1]
是工单号,可以引用如下:要查看作业编号列表,请使用
jobs
命令。man bash
提供的更多信息:在shell中引用作业的方法有多种。字符
%
引入作业名。作业号n
可以称为%n
。还可以使用用于启动作业的名称前缀或使用出现在其命令行中的子字符串来引用作业。例如,%ce
是指已停止的ce
作业。如果前缀与多个作业匹配,则bash会报告错误。另一方面,使用%?ce
是指在其命令行中包含字符串ce
的任何作业。如果子字符串与多个作业匹配,bash报告一个错误。符号%%
和%+
表示shell对当前作业的概念,当前作业是最后一个在前台停止或在后台启动的作业。可以使用%-
引用上一个作业。在与作业有关的输出中(例如,作业命令的输出),则当前作业始终标记为+
,前一作业标记为-
。单个%
(没有附带的作业规范)也引用当前作业。0md85ypi2#
在Bash中有一个特殊的变量:
$!扩展到后台执行的最后一个进程的PID。
ncgqoxb03#
下面的命令提供了会话中所有后台进程的列表,沿着pid,然后可以使用它来终止进程。
示例用法:
fykwrbwg4#
这将终止所有后台进程:
igetnqfo5#
skill
是kill命令的一个版本,允许您根据给定的条件选择一个或多个进程。vawmfj5a6#
您需要它的pid...使用“ps-A”查找它。
9bfwbjaz7#
正如John Kugelman的回答,
%
与作业规范有关。如何有效地找到它?使用less的&pattern命令。man似乎使用了 less 分页器(我不确定)。在“man”Bash中,键入&%,然后键入Enter。它将只显示包含“%”的行。要重新显示所有行,键入&,然后键入Enter。
klr1opcd8#
只需使用killall命令:
全部清除任务名
要获得更多信息和更高级的选项,请键入“man killall”。