如果后台的 linux 作业完成,这些 +/- 是什么意思(以 & 开头)

Phi*_*hil 52 linux bash

如果我&在末尾使用与号 ( )开始一个进程,它将被分叉到后台。完成后,我得到类似于

[1]+  Fertig   my_script
Run Code Online (Sandbox Code Playgroud)

我有一个本地化的发行版,但这应该无关紧要。

我看到的是方括号中的作业 ID,后跟一个加号 ( +)。

如果我有多个并行开始的工作,我会得到

[1]-  Fertig   my_script
[2]+  Fertig   my_script
Run Code Online (Sandbox Code Playgroud)

现在我-的第一份工作有一个减号 ( ),第二份工作有一个加号 ( +)。

我想知道,那些+/-是什么意思。

使用互联网搜索引擎找不到任何答案。

jau*_*ume 67

来自man bash

在与作业有关的输出(例如,jobs命令的输出)中,当前作业始终标记为+,而前一个作业标记为-

也就是说,标有 a 的作业+是最后发送到后台的作业。

它也是在fg不带参数的情况下使用时将被带入前台的:

$ /tmp/script &
[1] 9871
$ /tmp/script2 &
[2] 9876
$ /tmp/script3 &
[3] 9881
$ /tmp/script4 &
[4] 9886
$ jobs
[1]   Running                 /tmp/script &
[2]   Running                 /tmp/script2 &
[3]-  Running                 /tmp/script3 &
[4]+  Running                 /tmp/script4 &
$ fg
/tmp/script4
Run Code Online (Sandbox Code Playgroud)

标记为 a 的作业-倒数第二次发送到后台。其他后台作业不会被标记。

  • @tsbertalan 我先按 Ctrl+Z,然后按 `fg -` 在两个工作之间切换。减号就派上用场了。 (11认同)