Как запустить два процесса в фоновом режиме и перенести второе задание на рабочий стол?

Эти два процесса:

cat /dev/tty > /dev/null &
cat /dev/zero > /dev/null &

должны выполняться в фоновом режиме, но мне не удается вывести второе задание на передний план.

0
06.11.2016, 05:35
2 ответа

Вы пробовали команду fg ?

fg% 2

0
28.01.2020, 04:49

Если бы это были два обычных задания, то простое fgвывело бы второе задание на передний план, если это было самое последнее приостановленное фоновое задание или фоновое задание, которое было запущено последним (без каких-либо других приостановленных заданий. ).

Однако из-за характера первого задания (, считывающего из /dev/tty), оно будет остановлено, как только попытается прочитать из TTY. Таким образом, fgпоместит его на передний план.

Здесь можно использовать либо %-, либо %2, учитывая, что других заданий нет.


Когда задание переводится в фоновый режим либо путем запуска задания с завершающим символом &, либо путем приостановки приоритетного задания с помощью Ctrl+Z с последующим вводом команды bg, заданию присваивается «идентификатор задания» или «спецификация задания». Этот идентификатор задания обычно обозначается как %N, где N— некоторое десятичное число.

Вы можете использовать идентификатор задания с несколькими командами, такими как wait, kill, fgи bg. Команда kill, например, может использоваться для отправки сигнала фоновому заданию с использованием его идентификатора задания.

Команда fgпо умолчанию работает с «текущим заданием». Идентификатор текущего задания доступен как %+или %%. Текущее задание — это самое последнее запущенное фоновое задание или, если есть приостановленные задания, последнее приостановленное задание.

Чтобы переместить произвольное фоновое задание на передний план, используйте его идентификатор задания:

$ sleep 1000 &
[1] 37327
$ sleep 500 &
[2] 83532
$ jobs
[1]-  Running                 sleep 1000 &
[2]+  Running                 sleep 500 &
$ fg %1
sleep 1000

+в выводе jobsобозначает «текущее задание» (, на которое можно было бы переключиться простым вызовомfg).

Стандартные идентификаторы специальных заданий POSIX:

  • %%, текущее задание.
  • %+, то же, что и выше.
  • %-, предыдущее задание.
  • %N, номер задания N.
  • %string, задание, команда которого начинается с string.
  • %?string, задание, команда которого содержит string.
0
28.01.2020, 04:49

Теги

Похожие вопросы