【发布时间】:2012-03-05 09:48:24
【问题描述】:
当我运行多个后台进程时,我的命令jobs 的输出例如是:
[1]- RUNNING nohup somecommand1 &
[2]+ RUNNING nohup somecommand2 &
job id 后面的“+”和“-”是什么意思?
【问题讨论】:
当我运行多个后台进程时,我的命令jobs 的输出例如是:
[1]- RUNNING nohup somecommand1 &
[2]+ RUNNING nohup somecommand2 &
job id 后面的“+”和“-”是什么意思?
【问题讨论】:
它位于 STDOUT 下作业的手册页中:
> man jobs
字符“+”标识将用作 fg 或 bg 实用程序默认值的作业;也可以使用 job_id %+ 或 "%%" 指定此作业。如果当前默认作业退出,字符“-”标识将成为默认作业的作业;也可以使用 job_id %- 指定此作业。
所以标有“+”的作业就是将被“fg”激活的作业。
【讨论】:
man jobs 时,我只能得到一个非常简短的参数描述。
bash 手册页,jobs 部分只是一个参数列表。没有标准输出。
+ 表示该进程是在进入后台之前运行的最后一个进程。 - 表示在进入后台之前是倒数第二个。
如果您执行“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
注意最后几行,其中 + 和 - 改变了位置。
【讨论】: