В интернете нашел интересную информацию, как запустить команду в фоне чтобы она не была остановлена (заморожена) в консоли операционной системы 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]
. . . .
- Тест скорости дисков в Linux
- Как запустить команду в фоне в Linux
- Ошибка несоответствие размеров GPT PMBR
- nginx: [warn] protocol options redefined
- Как включить поддержку linux в windows 11