Команда bg предназначена для возобновления исполнения остановленной задачи в фоновом режиме в командных оболочках bash и ksh. Вы сможете пользоваться командной оболочкой, причем весь вывод исполняющейся в фоновом режиме задачи в процессе ее работы будет отображаться с помощью этой же командной оболочки. При этом вы не сможете взаимодействовать с исполняющейся в фоновом режиме задачей. Для того, чтобы вернуть задачу в обычный режим и начать взаимодействие с ней, следует использовать команду fg, а для завершения исполнения команды в фоновом режиме — команду kill.
Команда bg реализована и как встроенная команда, и как внешняя команда, но пользователю следует использовать лишь встроенную команду, ведь внешняя команда предназначена для особых случаев.
Базовый синтаксис команды bg выглядит следующим образом:
$ bg <идентификатор задачи>
Процесс перевода задачи в фоновый режим предельно прост: достаточно воспользоваться сочетанием клавиш CTRL+Z для приостановки исполнения задачи, после чего выполнить приведенную выше команду для возобновления исполнения задачи уже в фоновом режиме. В качестве идентификатора задачи могут использоваться:
Для ознакомления со списком задач командной оболочки и их идентификаторами достаточно воспользоваться командой jobs. Команды fg и kill также принимают идентификаторы задач описанных форматов.
$ ping 127.0.0.1
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.057 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.062 ms
...
В данном случае осуществляется отправка ping-пакетов на локальную систему через узловой сетевой интерфейс и прием ответов на них.
...
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.060 ms
^Z
[1]+ Stopped ping 127.0.0.1
Для остановки исполнения команды было использовано сочетание клавиш CTRL+Z. В результате а задаче был присвоен идентификатор %1. В этом достаточно просто убедиться с помощью команды jobs:
$ jobs
[1]+ Stopped ping 127.0.0.1
$ bg %ping
[1]+ ping 127.0.0.1 &
64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.079 ms
Здесь в качестве идентификатора задачи было использовано начало команды, хотя можно бы было использовать такие идентификаторы, как %1, %+ или %%.
$fg %ping
64 bytes from 127.0.0.1: icmp_seq=180 ttl=64 time=0.069 ms
64 bytes from 127.0.0.1: icmp_seq=181 ttl=64 time=0.063 ms
...
64 bytes from 127.0.0.1: icmp_seq=216 ttl=64 time=0.068 ms
^C
--- 127.0.0.1 ping statistics ---
216 packets transmitted, 216 received, 0% packet loss, time 378086ms
rtt min/avg/max/mdev = 0.053/0.068/0.092/0.010 ms
Для завершения исполнения задачи использовалось сочетание клавиш CTRL+C.