1

На странице руководства bash написано

В выводе, относящемся к заданию (например, выводе команды заданий), текущее задание всегда помечается знаком +, а предыдущее задание -. Отдельный% (без сопутствующей должностной инструкции) также относится к текущей работе.

В приведенной ниже серии команд после да 2> /dev /null & я ожидал, что задание [2] будет текущим заданием, а не заданием [1].

Также в конце команды yes 3> /dev /null & я ожидал, что выходные данные команды jobs будут такими:

[1] остановлен
[2] - Бег
[3]+ Бег

что мне не хватает?

$ 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 &

1 ответ1

0

С той же страницы руководства:

[…] Текущее задание, которое является последним заданием, остановленным, когда оно находилось на переднем плане или началось в фоновом режиме.

Это несколько двусмысленно. Вы можете понять это как:

  1. Возьмите все «задания, остановленные, когда они были на переднем плане или начались в фоновом режиме»…
  2. … Затем выберите "последний".

Но это скорее

  1. Возьмите «последняя работа остановилась, пока она была на переднем плане»;
  2. но если такой работы нет, возьмите «последнюю работу, начатую в фоновом режиме».

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .