Как запустить команду в фоне — процессы в Linux

Делюсь лайфхаком как запустить команду на выполнение процессом чтобы она продолжала работать в фоновом режиме без остановки или (заморожена) в консоли операционной системы 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 — для прерывания процесса.
Друзья помогите этому контенту стать доступнее в социальных сетях.

Не проходи мимо жмакни по кнопке возможно кому то еще он будет полезен!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *