В интернете нашел интересную информацию, как запустить команду в фоне чтобы она не была остановлена (заморожена) в консоли операционной системы 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)

bg: перемещение задачи в фон

Предположим, вы хотите переместить в фон задание, выполнение которого уже началось (чтобы можно было делать в терминале что-то другое). Для этого надо нажать CTL + Z, а затем запустить команду bg (сокращение от background).

Выводы

Мы рассмотрели команды, которые позволяют управлять фоновыми и приоритетными процессами:

  • bg и fg — для перемещения задач в фон и обратно, в активное окно;
  • jobs — для вывода списка активных задач в текущем терминале;
  • kill — для прерывания процесса.

[endtxt]

. . . .

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

0 0 голоса
Рейтинг статьи

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам:

Продолжая пользование настоящим сайтом Вы выражаете своё согласие на обработку Ваших персональных данных (файлов cookie) с использованием трекеров "Google Analytics" и "Yandex.Metrics". Порядок обработки Ваших персональных данных, а также реализуемые требования к их защите, содержатся в Политике конфиденциальности.
Принять