fly*_*ire 188 unix linux bash kill job-control
如何杀死linux中最后生成的后台任务?
例:
doSomething
doAnotherThing
doB &
doC
doD
#kill doB
????
Run Code Online (Sandbox Code Playgroud)
Joh*_*ica 285
您可以按工作号码杀死.当你在后台放置一个任务时,你会看到类似的东西:
$ ./script &
[1] 35341
Run Code Online (Sandbox Code Playgroud)
这[1]是工号,可以像:
$ kill %1
$ kill %% # Most recent background job
Run Code Online (Sandbox Code Playgroud)
要查看作业号列表,请使用该jobs命令.更多来自man bash:
有很多方法可以引用shell中的作业.角色
%引入了一个工作名称.工作号码n可以称为%n.也可以使用用于启动它的名称的前缀或使用其命令行中出现的子字符串来引用作业.例如,%ce指的是已停止的ce作业.如果前缀匹配多个作业,则bash报告错误.使用%?ce,在另一方面,是指包含字符串的任何作业ce在其命令行.如果子字符串匹配多个作业,bash会报告错误.符号%%和%+引用shell的当前作业的概念,这是在前台或在后台启动时停止的最后一个作业.可以使用以前的作业来引用%-.在与作业相关的输出(例如,作业命令的输出)中,当前作业始终标记为a+,而前一个作业标记为a-.单个%(没有伴随的工作规范)也指当前的工作.
fal*_*tro 229
在bash中有一个特殊的变量:
kill $!
Run Code Online (Sandbox Code Playgroud)
$!扩展到后台执行的最后一个进程的PID.
Dav*_*ogt 45
以下命令为您提供会话中所有后台进程的列表以及pid.然后,您可以使用它来终止进程.
jobs -l
Run Code Online (Sandbox Code Playgroud)
用法示例:
$ sleep 300 &
$ jobs -l
[1]+ 31139 Running sleep 300 &
$ kill 31139
Run Code Online (Sandbox Code Playgroud)
Pra*_*Are 25
这应该会杀死所有后台进程:
jobs -p | xargs kill -9
Run Code Online (Sandbox Code Playgroud)