Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash “和”的意思是什么当后台进程结束时,“完成”前面的“符号”是什么?_Bash_Shell_Parallel Processing - Fatal编程技术网

Bash “和”的意思是什么当后台进程结束时,“完成”前面的“符号”是什么?

Bash “和”的意思是什么当后台进程结束时,“完成”前面的“符号”是什么?,bash,shell,parallel-processing,Bash,Shell,Parallel Processing,问题 当后台进程结束时,+、-和前面的符号的含义是什么 感兴趣的例子 代码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

问题

当后台进程结束时,
+
-
前面的
符号的含义是什么

感兴趣的例子

代码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 )

以下是我对它的理解:

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表示已停止的ce作业。如果前缀匹配多个作业,bash将报告错误。使用%?ce, 另一方面 手动,是指在其命令行中包含字符串ce的任何作业。如果子字符串与多个作业匹配,bash将报告 错误。这个 符号%%和%+表示shell对当前作业的概念,当前作业是在前台或后台停止的最后一个作业 开始于 背景。上一个作业可以使用%-。如果只有一个作业,%+和%-都可以用来表示 那份工作。在里面 与作业相关的输出(例如,作业命令的输出),当前作业始终标记为+和上一个作业 与一个-。A. 单一作业(无随附作业规范)也指当前作业

%+
不仅显示后台作业的状态更改,还显示前台作业的状态更改,例如,已通过
终止-停止
暂停的作业

有关更多详细信息,请参阅

作业编号n可以称为“%n”。符号“%”和“%”表示shell对当前作业的概念,当前作业是在前台停止或在后台启动的最后一个作业。单个“%”(不附带作业规范)也引用当前作业。可以使用“%”-引用上一个作业。如果只有一个作业,“%+”和“%-”都可用于引用该作业。在与作业相关的输出(例如,作业命令的输出)中,当前作业始终标记为“+”,上一个作业标记为“-”

在后台运行多个作业的情况下,
bash
会在作业状态发生更改以及单击另一个
提示时显示作业。要在作业更改状态/终止时立即查看作业,可以使用
set
builtin

$ set -b
$ sleep 10 &
[1] 27866
$ sleep 10 &
[2] 27868
$  [1]-  Done                    sleep 10

[2]+  Done                    sleep 10
$ sleep 10 
[1]+  Stopped    sleep 10

# by running kill -STOP 28105  on another terminal
$ set -b
$ sleep 10 &
[1] 27866
$ sleep 10 &
[2] 27868
$  [1]-  Done                    sleep 10

[2]+  Done                    sleep 10