Os sinais “+” e “-” ao lado do número do trabalho

1

A página do homem bash diz

In output pertaining to jobs (e.g., the output of the jobs command), the current job is always flagged with a +, and the pre‐ vious job with a -. A single % (with no accompanying job specifica‐ tion) also refers to the current job.

Na minha série de comandos abaixo, depois de sim 2 > / dev / null & , eu esperava que o trabalho [2] fosse o trabalho atual e não o trabalho [1].

Também no final do comando yes 3 > / dev / null & Eu esperava que a saída do comando jobs fosse assim:

[1] Stopped
[2] - Correndo
[3] + executando

o que estou perdendo?

$ yes 1 > /dev/null
^Z
[1]+  Stopped                 yes 1 > /dev/null
$ jobs
[1]+  Stopped                 yes 1 > /dev/null
$ yes 2 > /dev/null &
[2] 3082
$ jobs
[1]+  Stopped                 yes 1 > /dev/null
[2]-  Running                 yes 2 > /dev/null &
$ yes 3 > /dev/null &
[3] 3116
$ jobs
[1]+  Stopped                 yes 1 > /dev/null
[2]   Running                 yes 2 > /dev/null &
[3]-  Running                 yes 3 > /dev/null &
    
por Ravi Kumar 28.09.2017 / 23:40

1 resposta

0

Na mesma página do manual:

[…] the current job, which is the last job stopped while it was in the foreground or started in the background.

É um tanto ambíguo. Você pode entender isso como:

  1. Pegue todos os "trabalhos interrompidos enquanto estavam no primeiro plano ou iniciados em segundo plano"…
  2. … então escolha "o último".

Mas é em vez :

  1. Tome "o último trabalho parado enquanto estava em primeiro plano";
  2. mas no caso de não haver trabalho assim, considere "o último trabalho iniciado em segundo plano".
por 29.09.2017 / 00:10