Некоторые команды Bash могут выполняться в течение длительного времени, так же возможен сценарий параллельной обработки, когда одна команда записывает данные в файлы, вторая их обрабатывает. В любом случае, нет необходимости ждать завершения работы команд или сценариев.
Вместо этого можно запустить любую команду (сценарий) в фоновом режиме, используя оператор &. Сценарий будет выполнятся дальше, но при этом у нас будет возможность использовать оболочку. Конечно никто не запрещает запустить несколько подключений или переключится между терминалами.
Для примеру запустим ping в фоновом режиме.
При работе в фоне необходимо перенаправлять вывод, иначе все сообщения будут писаться прямо в терминал и прерывая действия в терминале. Если конечно этого не требуется.
Cимвол & отправляет задания в фоновый режим, но стоит обратить внимание что &> символ перенаправленния вывода и ошибок
1 | ping g-soft.info > /tmp/ping.log & |
Что бы посмотреть список зада, которые сейчас выполняются в фоне, используем команду jobs
1 2 | jobs [1]+ Running ping g-soft.info > /tmp/ping.log & |
Для переключения на задачу (вывести ее из фона), используем команду fg, с номером фонового задания
1 2 | fg 1 ping g-soft.info > /tmp/ping.log |
Если задача сейчас находится в приоритетном режиме, ее можно поставить на пузу (приостановить) сочетанием клавиш CTRL+Z
Для возобновления работы задачи используем команду bg с номером задачи
1 2 3 4 5 6 7 8 9 10 11 12 | jobs [1]- Stopped ping g-soft.info > /tmp/ping.log [2]+ Stopped ping g-soft.info > /tmp/ping.log [3] Running ping g-soft.info > /tmp/ping.log & bg 1 [1]- ping g-soft.info > /tmp/ping.log & jobs [1] Running ping g-soft.info > /tmp/ping.log & [2]+ Stopped ping g-soft.info > /tmp/ping.log [3]- Running ping g-soft.info > /tmp/ping.log & |