Linux:终止后台任务
- 2024-11-06 08:34:00
- admin 原创
- 31
问题描述:
如何在 Linux 中终止最后生成的后台任务?
例子:
doSomething
doAnotherThing
doB &
doC
doD
#kill doB
????
解决方案 1:
你可以通过任务号来终止任务。当你将任务放入后台时,你会看到类似以下内容:
$ ./script &
[1] 35341
这[1]
是工作编号,可以这样引用:
$ kill %1
$ kill %% # Most recent background job
要查看作业编号列表,请使用jobs
命令。更多来自man bash
:
在 shell 中有多种方式来引用作业。字符
%
引入作业名称。作业号n
可以用 来引用%n
。还可以使用启动作业的名称的前缀或使用出现在其命令行中的子字符串来引用作业。例如,%ce
引用已停止的ce
作业。如果前缀与多个作业匹配,bash 会报告错误。%?ce
另一方面,使用 引用任何ce
在其命令行中包含字符串的作业。如果子字符串与多个作业匹配,bash 会报告错误。符号%%
和%+
指的是 shell 对当前作业的概念,它是在前台运行或在后台启动时最后停止的作业。可以使用 来引用前一个作业%-
。在与作业有关的输出中(例如,jobs 命令的输出),当前作业始终用 标记+
,而前一个作业用 标记-
。单个%
(没有附带作业规范)也指当前作业。
解决方案 2:
Bash 中有一个特殊变量用于此目的:
kill $!
$! 扩展为后台执行的最后一个进程的 PID。
解决方案 3:
以下命令将列出会话中的所有后台进程以及 pid。然后您可以使用它来终止进程。
jobs -l
使用示例:
$ sleep 300 &
$ jobs -l
[1]+ 31139 Running sleep 300 &
$ kill 31139
解决方案 4:
这应该会终止所有后台进程:
jobs -p | xargs kill -9
解决方案 5:
skill doB
skill
是 kill 命令的一个版本,可让您根据给定的条件选择一个或多个进程。
解决方案 6:
您需要它的 pid...使用“ps -A”来找到它。
解决方案 7:
正如John Kugelman 的回答一样,%
这与工作规范有关。
我们如何才能高效地找到它?使用less的 &pattern 命令。似乎man使用了less分页器(我不太确定)。在 'man' Bash 中,输入&%
,然后输入Enter
。它只会显示包含“%”的行。要重新显示全部,请输入&
。然后输入Enter
。
解决方案 8:
只需使用 killall 命令:
killall 任务名
要了解更多信息和更多高级选项,请输入“man killall”。
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件