Команда fg предназначена для перевода фоновой задачи в обычный режим в командных оболочках bash и ksh. После использования данной команды вы получите возможность взаимодействия с ранее исполнявшейся в фоновом режиме программой. Команда fg реализована как встроенная команда, ведь управление задачами осуществляется на уровне командной оболочки.
Базовый синтаксис команды fg выглядит следующим образом:
$ fg %<идентификатор задачи>
Процесс перевода задачи в фоновый режим предельно прост: вы можете либо воспользоваться сочетанием клавиш CTRL+Z для приостановки исполнения задачи, после чего выполнить команду bg для возобновления исполнения задачи уже в фоновом режиме, либо просто добавить символ & после команды. В качестве идентификатора задачи могут использоваться:
Для ознакомления со списком задач командной оболочки и их идентификаторами достаточно воспользоваться командой jobs. Команды bg и kill также принимают идентификаторы задач описанных форматов.
Для запуска задачи в фоновом режиме используется символ & после имени команды:
$ ping 127.0.0.1 &
[1] 11211
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.025 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.037 ms
...
В данном случае осуществляется отправка ping-пакетов на локальную систему через узловой сетевой интерфейс и прием ответов на них. Задаче присваивается идентификатор 1, вывод передается через этот же терминал, хотя сама задача исполняется в фоновом режиме, ведь если попытаться завершить ее исполнение с помощью сочетания клавиш CTRL+C, ничего не получится. Также не лишним будет выполнить команду jobs, чтобы убедиться в наличии фоновой задачи (ввиду того, что в примере вывод утилиты передается через тот же терминал, ввод команды будет осложнен):
$ jobs
[1]+ Запущен ping 127.0.0.1 &
Для перевода задачи в обычный режим следует использовать команду fg (ввиду того, что в примере вывод утилиты передается через тот же терминал, ввод команды будет осложнен).
$ fg %ping
ping 127.0.0.1
64 bytes from 127.0.0.1: icmp_seq=244 ttl=64 time=0.034 ms
…
64 bytes from 127.0.0.1: icmp_seq=266 ttl=64 time=0.026 ms
^C
--- 127.0.0.1 ping statistics ---
266 packets transmitted, 266 received, 0% packet loss, time 636ms
rtt min/avg/max/mdev = 0.026/0.034/0.065/0.007 ms
Здесь в качестве идентификатора задачи было использовано начало команды, хотя можно бы было использовать такие идентификаторы, как %1, %+ или %%. Задача начала исполняться в обычном режиме, поэтому для завершения ее исполнения может использоваться сочетание клавиш CTRL+C.