Команды jobs, fg, bg

20.01.2020

Теги: CLILinuxКоманда

Запущенный процесс в обычном режиме работает в режиме «foreground», т.е. — «на переднем плане», другими словами — «в приоритетном режиме». В таком режиме он принимает команды с управляющего терминала, в котором он запущен, и на него же выводит информацию stdout и stderr. Кроме того, он делает недоступным командную строку. Чтобы запустить задачу в фоновом режиме — в конце команды необходимо добавить знак амперсанда &.

Запуск фоновых заданий

Запустим три фоновых задания (сжимаем поток нулей и отправляем результат в /dev/null):

$ nice gzip < /dev/zero > /dev/null &
[1] 3380
$ nice bzip2 < /dev/zero > /dev/null &
[2] 3381
$ nice xz < /dev/zero > /dev/null &
[3] 3382

Три задания, с номерами 1, 2, 3 и PID-ами 3380, 3381, 3382.

Управление фоновыми заданиями

Команды jobs, bg (background) и fg (foreground) позволяют управлять заданиями, выполняющимися на переднем и заднем планах:

  • jobs выводит список фоновых процессов
  • fg номер переводит процесс на передний план
  • bg номер переводит процесс на задний план

Посмотрим список фоновых процессов:

$ jobs
[1]   Запущен          nice gzip < /dev/zero > /dev/null &
[2]-  Запущен          nice bzip2 < /dev/zero > /dev/null &
[3]+  Запущен          nice xz < /dev/zero > /dev/null &
$ jobs -l
[1]   3380 Запущен          nice gzip < /dev/zero > /dev/null &
[2]-  3381 Запущен          nice bzip2 < /dev/zero > /dev/null &
[3]+  3382 Запущен          nice xz < /dev/zero > /dev/null &

Знак «плюс» означает «текущее», т.е. то, с которым мы работаем сейчас. Знак «минус» означает «предыдущее». Если мы завершим текущее — то предыдущее станет текущим. Команды fg и bg без номера задания будут работать с текущим.

Переведем третье задание (текущее) на передний план:

$ fg
nice xz < /dev/zero > /dev/null

Теперь терминал ожидает окончания выполнения задания. Поскольку задание у нас бесконечное — терминал будет занят бесконечно. Приостановим эту задачу с помощью Ctrl+Z:

^Z
[3]+  Остановлен    nice xz < /dev/zero > /dev/null
$ jobs -l
[1]   3380 Запущен          nice gzip < /dev/zero > /dev/null &
[2]-  3381 Запущен          nice bzip2 < /dev/zero > /dev/null &
[3]+  3382 Остановлено      nice xz < /dev/zero > /dev/null

Теперь, чтобы продолжить её выполнение в фоновом режиме:

$ bg
[3]+ nice xz < /dev/zero > /dev/null &
$ jobs -l
[1]   3380 Запущен          nice gzip < /dev/zero > /dev/null &
[2]-  3381 Запущен          nice bzip2 < /dev/zero > /dev/null &
[3]+  3382 Запущен          nice xz < /dev/zero > /dev/null &

Чтобы завершить фоновое задание, надо переместить его на передний план, а потом завершить с помощью Ctrl+C:

$ fg 1
nice gzip < /dev/zero > /dev/null
^C
$ jobs -l
[2]-  3381 Запущен          nice bzip2 < /dev/zero > /dev/null &
[3]+  3382 Запущен          nice xz < /dev/zero > /dev/null &

Поиск: CLI • Linux • Команда • jobs • fg • bg

Каталог оборудования
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Производители
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Функциональные группы
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.