问题
后台流程结束时+
之前的-
,和
Done
符号有什么含义?
感兴趣的例子
代码1
(sleep 4s; echo first)&
(sleep 2s; echo second)&
(sleep 1s; echo third)&
[1] Done ( sleep 4s; echo first )
[2]- Done ( sleep 2s; echo second )
[3]+ Done ( sleep 1s; echo third )
代码2
(echo first)&
(echo second)&
(echo third)&
[1]+ Done ( echo first )
[2]+ Done ( echo second )
[3]+ Done ( echo third )
答案 0 :(得分:12)
所以这是我对它的理解:
1-已标记作业或+
作业是最后发送到后台的作业。
2-工作已标记或已将-
发送到后台的后台。
3-其他后台作业未被标记。
以下是我刚在系统上运行的示例:
$bash: /singh/test1 &
[1] 9223
$bash: /singh/test2 &
[2] 9226
$bash: /singh/test3 &
[3] 9234
$bash: /singh/test4 &
[4] 9237
$bash: jobs
[1] Running /singh/test &
[2] Running /singh/test2 &
[3]- Running /singh/test3 &
[4]+ Running /singh/test4 &
我可以从男人身上看到 bash
:
有很多方法可以引用shell中的作业。字符%引入了作业规范(jobspec)。工作 数字n可能是 称为%n。也可以使用用于启动它的名称的前缀或使用出现的子字符串来引用作业 在它的命令 线。例如,%ce指的是停止的作业。如果前缀匹配多个作业,则bash报告错误。使用%?ce, 在另一 hand,指在命令行中包含字符串ce的任何作业。如果子字符串匹配多个作业,bash会报告一个 错误。该 符号%%和%+指的是当前作业的shell概念,这是在前台作业时停止的最后一个作业或者 开始了 背景。可以使用% - 引用上一个作业。如果只有一个作业,%+和% - 都可以用来引用 那份工作。在 与作业相关的输出(例如,作业命令的输出),当前作业总是标记为+,以及之前的作业 工作与 - 。一个 单个%(没有伴随作业规范)也指当前作业。
答案 1 :(得分:4)
%+ : current job; last job stopped in foreground or started in background
%- : last/previous job
%% : same as +
%+
不仅会显示后台作业中的状态更改,还会显示前台作业,例如已暂停kill -STOP <pid>
的作业。
$ sleep 10
[1]+ Stopped sleep 10
# by running kill -STOP 28105 on another terminal
有关详细信息,请参阅Bash Job Control Basics。
作业编号n可以称为'%n'。符号'%%'和'%+'指的是当前作业的shell概念,它是在前台或在后台启动时停止的最后一个作业。单个'%'(没有伴随作业规范)也指当前作业。可以使用'% - '引用上一个作业。如果只有一个作业,'%+'和'% - '都可以用来指代那个作业。在与作业相关的输出中(例如,作业命令的输出),当前作业总是标记为“+”,而前一个作业标记为“ - ”。
在后台运行多个作业时,bash
会向您显示作业,状态何时更改以及何时达到另一个prompt
。要在作业更改其状态/终止时立即查看作业,可以使用set
内置。
$ set -b
$ sleep 10 &
[1] 27866
$ sleep 10 &
[2] 27868
$ [1]- Done sleep 10
[2]+ Done sleep 10