后台作业的作业ID后面的后缀“+”和“ - ”是什么意思?

时间:2012-03-05 09:48:24

标签: linux bash shell unix

当我运行多个后台进程时,我的命令jobs的输出就是:

[1]-  RUNNING                  nohup somecommand1 &
[2]+  RUNNING                  nohup somecommand2 &

作业ID之后的“+”和“ - ”字符是什么意思?

2 个答案:

答案 0 :(得分:15)

这是STDOUT下的工作的人工页面:

> man jobs
  

字符'+'标识将用作fg或bg实用程序的默认作业;也可以使用job_id%+或“%%”指定此作业。字符' - '标识当前默认作业退出时将成为默认值的作业;也可以使用job_id% - 。

指定此作业

因此标有'+'的作业将被'fg'激活。

答案 1 :(得分:5)

+表示该进程是在放入后台之前运行的最后一个进程。 - 意味着它在投入背景之前是倒数第二。

如果您执行“fg”,您的作业编号2(+)将被置于前台,除非您明确说明“fg%1”,这将把作业与 - 放入前景。

示例:

rock:$ sleep 30m &
[1] 25808
[1002 ~]
rock:$ sleep 45m &
[2] 25813
[1003 ~]
rock:$ jobs
[1]-  Running                 sleep 30m &
[2]+  Running                 sleep 45m &
[1004 ~]
rock:$ fg
sleep 45m
[2]+  Stopped                 sleep 45m
[1005 ~]
rock:$ jobs
[1]-  Running                 sleep 30m &
[2]+  Stopped                 sleep 45m
[1006 ~]
rock:$ fg %1
sleep 30m
[1]+  Stopped                 sleep 30m
[1007 ~]
rock:$ jobs
[1]+  Stopped                 sleep 30m
[2]-  Stopped                 sleep 45m

注意最后一行,其中+和 - 改变位置。