Как запустить программу в фоновом режиме linux
Перейти к содержимому

Как запустить программу в фоновом режиме linux

  • автор:

Как запустить программу в фоновом режиме linux

Некоторые команды shell занимают много времени при выполнении. Эти команды можно запустить в фоновом режиме с использованием & , освобождая тем самым терминал для других задач. Общий формат для запуска команд в фоновом режиме следующий:

command &

Примечание. Интерактивные команды shell (например, read ) нельзя запускать в фоновом режиме.

Когда вы запускаете команду в фоновом режиме, то система Linux выводит номер процесса. Вы можете использовать этот номер для завершения выполняющейся в фоновом режиме команды. Появившаяся подсказка означает, что терминал свободен и ожидает вашу команду.

Запустить команду в фоновом режиме вы можете только в том случае, если ваш терминал предоставляет вам такую возможность.

Alex Otwagin 2002-12-16

Запуск команд Linux в фоновом режиме (+Видео)

Запуск команд Linux в фоновом режиме

В данной заметке мы рассмотрим, как запускать команды Linux в фоновом режиме. То есть, когда после запуска какой-либо команды, она начинает свою работу в фоне, а вы продолжаете работать в терминале.

Оглавление

  • Видео
  • Что такое приоритетный и фоновый режимы
  • Как запустить команду в фоновом режиме
  • Пример запуска команды в фоновом режиме
  • Как вывести задание из фонового режима
  • Просмотр заданий, работающих в фоновом режиме
  • Перевод задания в фоновый режим
  • Заключение

Видео

Видео-версия. Наше видео про запуск команд в фоновом режиме.

Что такое приоритетный и фоновый режимы

Обычно все команды Linux запускаются в оболочке (в командной строке) в приоритетном режиме, называемом foreground. В этом режиме оболочка ожидает завершения работы команды, прежде чем пользователь сможет ввести новую команду.

Можно запускать команды Linux в фоновом режимеbackground, при котором не нужно ожидать завершения команды, чтобы запустить другую команду.

Пользователь может запускать несколько команд в фоновом режиме одновременно. То есть эти команды будут выполняться параллельно. При этом окно терминала доступно для ввода новых команд.

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

Чтобы запустить команду в фоновом режиме, нужно в конец команды через пробел добавить знак амперсанда &

Синтаксис запуска команды в фоновом режиме можно записать следующим образом:

somecommand arg1 arg2 &

Пример запуска команды в фоновом режиме

Рассмотрим пример. Предположим, нам нужно распаковать большой tar-архив. Выполняем команду:

$ tar -xf archive.tar & [1] 7958 $ 

Распаковка архива выполняется в фоновом режиме, а мы можем вводить в терминале новые команды.

Запуск команды в фоновом режиме

Как вы можете видеть, на экран выводятся символы [1] 7958
[1] — это номер, который оболочка назначила нашему фоновому заданию, чтобы мы могли идентифицировать его и управлять им (см. ниже как).
7958 — это идентификатор (PID) процесса, который был создан.

Как вывести задание из фонового режима

Если вы запустили один или несколько процессов в фоновом режиме, то вы можете подключиться к любому из них и вывести из фонового режима (перевести в приоритетный режим). Для этого используется команда fg

fg НомерЗадания

Команда fg , запущенная без аргументов, выводит из фонового режима последний запущенный фоновый процесс.

Например, запустим две команды в фоновом режиме и выполним команду fg . В результате мы выведем вторую команду из фонового режима.

$ tar -xf archive1.tar & [1] 8054 $ tar -xf archive2.tar & [2] 8055 $ fg tar -xf archive2.tar

Перевод в приоритетный режим. Команда fg

Можно указать номер конкретного задания, которое нужно вывести из фонового режима:

$ tar -xf archive1.tar & [1] 8054 $ tar -xf archive2.tar & [2] 8055 $ fg 1 tar -xf archive1.tar

Просмотр заданий, работающих в фоновом режиме

Для просмотра заданий, работающих в фоновом режиме, используется команда jobs

$ jobs [1] Запущен tar -xf archive1.tar & [2]- Запущен tar -xf archive2.tar & [3]+ Запущен gedit &

Использование команды jobs

Символом плюс + помечается последнее запущенное задание. Если использовать команду fg без аргументов, то она будет применена именно к этому заданию.
Символом минус — помечается задание, которое было запущено перед последним.

Перевод задания в фоновый режим

Чтобы перевести задание, которое в данный момент работает в приоритетном режиме, в фоновый режим, используется команда bg

Так как задание работает в приоритетном режиме, то вы не можете вводить команды, поэтому сначала нужно приостановить выполнение задания. Для этого используется сочетание клавиш Ctrl+Z

После этого можно выполнить команду bg , чтобы продолжить выполнение задания, но уже в фоновом режиме.

Команда bg

Заключение

Мы кратко рассмотрели, как запускать команды Linux в фоновом режиме. Использование фонового режима позволяет запускать одновременно несколько процессов из одного окна терминала (экземпляра оболочки). Особенно это удобно, когда команда должна выполняться длительное время и не требует постоянного наблюдения. Пользователь при этом может продолжать пользоваться командной строкой.

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

В этой статье расскажем о том, что такое процесс в фоне Linux и как его запустить. Инструкция предельно простая и понятная.

В Linux есть 2 режима работы с процессами:

foreground (приоритет, форграунд) – режим, при котором запуск новой команды возможен только после завершения прошлой;

background (фон, бекграунд) – для запуска новой команды не нужно завершать предыдущую.

Для чего запускают background-команды (в фоне) Linux

Работа в режиме бэкграунда (фоновом) удобна тем, что можно работать с несколькими командами параллельно. Окно терминала всегда доступно для того, чтобы вписывать в него новые команды. Остается разобраться, как с этим грамотно работать.

Как запустить фоновую команду в Линуксе: пошаговая инструкция

Чтобы запустить команду бекграунд (в фоне), необходимо ввести ее название и добавить в конец строчки знак эмперсанда &. Он указывается после пробела. К примеру:

thisisyourcommand argument1 argument2 &

К примеру, нам необходимо запустить распаковку tar-архива. Для этого используем в Линукс команду:

Вы можете использовать терминал для того, чтобы вводить в него новые команды и работать дальше, пока архив будет распаковываться в фоне.

По ходу работы вы можете видеть цифры [1] 3459. Давайте разберемся, что это такое и для чего используется.

[1] – номер, назначенный процессу оболочкой.

3459 – идентификатор созданного процесса (PID).

Если можно запустить процесс в фоне Линукс, то можно его оттуда и достать. Для вывода процесса из бекграунда нужна команда fg. Если ее ввести без указания номера задания, система по дефолту выведет из фона последний запущенный процесс.

Чтобы вывести из background в Линуксе конкретное задание, нужна команда:

В данном примере мы вывели из фона первую команду. Вам необходимо указать конкретный номер.

Также поддерживается возможность просмотра тех заданий, которые сейчас отрабатывают в фоне. Вам необходимо ввести команду

Теперь вы знаете, как запустить background-процесс (в фоне) Linux, посмотреть его статус и изменить приоритетность.

Запустить процесс в фоне в Linux

Служба с терминалом Linux по умолчанию ведется в однозадачном режиме. Это означает, что любая запущенная бригада блокирует терминал до своего завершения. Такой подход не удобен при запуске программ, спрашивающих продолжительного времени выполнения. Данную проблему можно решить двумя способами: раскрыть дополнительное окно терминала и выполнить в нем другую команду или использовать фоновый режим. Все нынешние операционные системы, в том числе и Linux, являются многозадачными, что подразумевает под собой возможность синхронного выполнения множества программ.

Запуск команд в фоновом режиме в Linux

Как запустить бригаду в фоновом режиме, чтобы сразу получить доступ к интерфейсу командной строки? Бригада, выполнение которой было запланировано принудительно, называется фоновым процессом. Фоновые процессы не показываются на экране. Например, HTTPD-сервер Apache работает в фоновом режиме для обслуживания веб-страниц. В низкоприоритетный режим можно поместить скрипт оболочки или любую команду. Задачу (например, бригаду или скрипт) можно перевести в фоновый режим, добавив символ «&» в конец командной строчки. Этот оператор переводит команду в фоновый режим и освобождает место в терминале. Бригада, выполняемая в фоновом режиме, называется заданием. Во время работы фоновой команды возможно выполнять любые другие команды. Синтаксис выглядит следующим образом:

Читайте также: Как в Linux дать файлу разрешение на запись?

command & script-name & /path/to/command arg1 arg2 & command-1 | command-2 arg1 & command-1 | command-2 -arg1 -arg2 >/path/to/output &

Для пуска программ в фоновом режиме, не блокирующем окно терминала, необходимо использовать специальный инструктор «&». Поставьте этот символ в самом конце строки после указания фамилии команды, опций и входящих параметров. В общем виде данную последовательность можно вписать как «имя_команды —опция входящий_параметр &».

ls ~/* > ~/test-file.txt &
[1] 18960

После нажатия кнопки Enter программа автоматически запустится в фоновом режиме. При этом терминал покажет строчку со следующим содержимым «[номер_задания] идентификатор_процесса», и выдаст приглашение к вводу новоиспеченной команды.

Найти команды, работающие в фоновом режиме в Linux

Выполните следующую бригаду:

Читайте также: Как в Linux Fedora настроить прокси сервер ростелекома?

Пример вывода данных:

[1]- Running find / -iname «*.c» 2> /dev/null > /tmp/output.txt &
[2]+ Running grep -R «hostNamed» / 2> /dev/null > /tmp/grep.txt &

Где [1] и [2] идентификаторы поручений.

Чтобы отобразить идентификаторы процессов для идентификаторов заданий помимо стандартных приведений, передайте параметр -l:

Пример вывода данных:

[1]- 7307 Running find / -iname «*.c» 2> /dev/null > /tmp/output.txt &
[2]+ 7324 Running grep -R «hostNamed» / 2> /dev/null > /tmp/grep.txt &

Дабы отобразить только идентификаторы процессов, введите:

Пример вывода данных:

Кончить выполнение команд, работающих в фоновом режиме

Для принудительного или постепенного завершения процесса вытечет использовать команду kill. Синтаксис выглядит следующим образом:

Читайте также: Подставить все аргументы предыдущей команды в Linux

kill PID
kill -15 PID
kill -9 PID
killall process-Name-Here
killall -15 process-Name-Here
killall -9 process-Name-Here

Возврат програмки в приоритетный режим в Linux

Linux позволяет не только запускать программы в фоновом режиме, но и по хотению возвращать к привычному выполнению. Для этого существует два инструмента: команда (Команда — группа лиц, объединённая общими мотивами, интересами) fg и оператор %. Принцип их усилия предельно прост. fg требует указать номер задания в качестве параметра, а к % его нужно подставить сходу после оператора без пробелов.

find / -name .ini 2> ~/results.txt &
[1] 19090
fg 1
bash: fg: задача закончилась
[1]+ Выход из 1 find / -name .ini 2> ~/results.txt

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

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