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

0 Comments
linux-logo

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

Если есть вопросы, то пишем в комментариях.

Также можете вступить в Телеграм канал, ВКонтакте или подписаться на Twitter. Ссылки в шапке страницы.
Заранее всем спасибо!!!

RSS

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

Русифицируем Ubuntu Server 16.04/18.04/20.04 LTS
linux-logo

Сегодня в статье настроим и русифицируем Ubuntu Server 16.04/18.04/20.04. Чтобы поддерживался русский язык, и перевод системы стал русским

Вносим CAA запись в DNS (bind9)
dns_bind9

Начиная с сентября 2017 года удостоверяющим центрам предписано обязательно проверять CAA-записи в DNS перед генерацией сертификата

Обновления Ubuntu Server 16.04 до 18.04
linux-logo

В этой статье рассмотрим пример обновления Ubuntu Server 16.04 до Ubuntu Server 18.04 Все наши действия нам придется выполнять из Читать

Защита OpenVPN с помощью Fail2Ban
fail2ban-logo

В связи с последними блокировками IP-адресов Роскомнадзором, встала необходимость завести свой собственный VPN сервер. Если VPN у вас ещё не Читать

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

Подписаться
Уведомление о
guest

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

0 комментариев
Inline Feedbacks
Просмотреть все комментарии

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

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