В интернете нашел интересную информацию, как запустить команду в фоне чтобы она не была остановлена (заморожена) в консоли операционной системы Linux, например Ubuntu.
Во многих мануалах написано, что для запуска команду в фоне, нужно в конце нее поставить амперсанд &.
Примеры
Чтобы перевести команду ls в фоновый режим, введите:
ls *.py > output.txt &Чтобы перевести следующую команду поиска в фоновый режим, добавьте символ & в конец командной строки:
find . -iname "*.mp3" > myplaylist.txt &Проблема в том, что при таком способе запуска программа в фоне заморозится и не будет работать, пока ее не вызовут в foreground командой fg. Это происходит из-за того, что родителем запускаемого процесса будет bash-шелл, и если программа будет продолжать работать, стандартный ввод/вывод данной программы будет путаться с вводом/выводом шелла.
Для правильного запуска без остановки в фоне выполняется команда:
(watch data >> /tmp/data.txt &)При таком запуске родителем программы будет непосредственно init.
Как найти задания, работающие в фоновом режиме?
Выполните следующую команду:
jobsПример вывода данных:
[1]+ запущен watch data >> /tmp/data.txtЧтобы отобразить идентификаторы процессов (PID) для идентификаторов заданий помимо стандартных сведений, передайте параметр -l
jobs –lПример вывода данных:
[1]- 12790 Запущен (вывод на терминал) watch data >> /tmp/data.txt
[2]+ 12843 Запущен sleep 400 &- Номера в квадратных скобках [
n] это номера (или идентификаторы) задач. Нумерация начинается с единицы. Знак «+» указывает на процесс, который был запущен последним, а «-» – на предпоследний процесс.
- Номера в квадратных скобках [
Как прекратить выполнение заданий, работающих в фоновом режиме?
Для принудительного или постепенного завершения процесса следует использовать команду kill. Синтаксис выглядит следующим образом:
kill 12790
- 12790 – PID вашего процесса
Как переместить процесс из фонового режима в приоритетный?
fg ID
- ID – id процесса, например ([1]- 12790 Запущен (выво…. – id будет номер
1)
- ID – id процесса, например ([1]- 12790 Запущен (выво…. – id будет номер
bg: перемещение задачи в фон
Предположим, вы хотите переместить в фон задание, выполнение которого уже началось (чтобы можно было делать в терминале что-то другое). Для этого надо нажать CTL + Z, а затем запустить команду bg (сокращение от background).
Выводы
Мы рассмотрели команды, которые позволяют управлять фоновыми и приоритетными процессами:
- bg и fg — для перемещения задач в фон и обратно, в активное окно;
- jobs — для вывода списка активных задач в текущем терминале;
- kill — для прерывания процесса.