【问题标题】:what does these output mean?这些输出是什么意思?
【发布时间】:2009-05-19 20:42:15
【问题描述】:

尤其是最后两个分别带有'-'和'+', 到底是什么意思?

[1]   Done                    php start.php bots/admin32.bot.php

[2]   Done                    php start.php bots/admin36.bot.php

[3]   Done                    php start.php bots/admin10.bot.php

[4]   Done                    php start.php bots/admin11.bot.php

[5]   Done                    php start.php bots/admin13.bot.php

[6]   Done                    php start.php bots/admin3.bot.php

[7]-  Done                    php start.php bots/admin4.bot.php

[8]+  Done                    php start.php bots/admin7.bot.php

[root@www2 robot]# 

【问题讨论】:

  • 你能解释一下你要做什么吗?
  • 只是一个简单的实验:sleep 1s & sleep 1s & sleep 1s &,然后等待并按回车

标签: linux bash


【解决方案1】:

来自Bash Reference Manual

职位编号n 可以称为“%n”。符号 ‘%%’ 和 ‘%+’ 指的是 shell 对当前作业的概念,它是最后一个在前台停止或在后台启动的作业。单个“%”(没有随附的工作规范)也指当前工作。可以使用“%-”引用之前的作业。如果只有一个作业,“%+”和“%-”都可以用来指代该作业。在与作业相关的输出中(例如,jobs 命令的输出),当前作业始终标记为“+”,之前的作业标记为“-”。

在启动和停止作业时的 Bash 输出中,

[n]+状态

表示“工作%n(又名工作%+)现在是状态”。

【讨论】:

    【解决方案2】:

    我认为您的命令包含字符&,这导致命令在后台运行。当命令完成时,它会打印此输出。

    例子:

    $ echo 1 &
    [1] 16021
    $
    [1]+  Done                    echo 1
    

    为防止这种情况发生,请引用 & 字符。在您的情况下,它可能是 URL 的一部分,因此您可以使用:

    $ wget "http://www.example.com/index.php?a=1&b=2"
    

    +- 标志分别表示当前和以前的工作。有关更多信息,请参阅job control in bash 上的此页面。

    【讨论】:

    • 当你说它已经完成时,你的意思是进程死了吗?但我使用 ps -ef 只是发现它还活着。
    • 当打印出'Done'字样时,表示进程执行完毕。您可能有许多进程运行相同的命令或其他东西。
    • ps -e 显示系统上的所有进程。只有那些属于你当前会话的,使用普通的psps -H给你一个树视图)。
    猜你喜欢
    • 2020-11-09
    • 2011-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-09
    • 1970-01-01
    • 2013-08-20
    • 2014-12-24
    相关资源
    最近更新 更多