【问题标题】:What do the suffixes "+" and "-" after the job id of background jobs mean?后台作业的作业id后面的后缀“+”和“-”是什么意思?
【发布时间】:2012-03-05 09:48:24
【问题描述】:

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

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

job id 后面的“+”和“-”是什么意思?

【问题讨论】:

    标签: linux bash shell unix


    【解决方案1】:

    它位于 STDOUT 下作业的手册页中:

    > man jobs
    

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

    所以标有“+”的作业就是将被“fg”激活的作业。

    【讨论】:

    • 谢谢!你当然有更好的 linux 发行版。当我点击man jobs 时,我只能得到一个非常简短的参数描述。
    • 这很有趣,你运行的是什么发行版?我正在运行 Arch Linux。
    • Scientific Linux,它基于 Red Hat Enterprise Linux。我得到一个通用的bash 手册页,jobs 部分只是一个参数列表。没有标准输出。
    【解决方案2】:

    + 表示该进程是在进入后台之前运行的最后一个进程。 - 表示在进入后台之前是倒数第二个。

    如果您执行“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
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-15
      • 2016-08-19
      • 1970-01-01
      相关资源
      最近更新 更多