Как запустить программу в фоновом режиме linux
Некоторые команды shell занимают много времени при выполнении. Эти команды можно запустить в фоновом режиме с использованием & , освобождая тем самым терминал для других задач. Общий формат для запуска команд в фоновом режиме следующий:
command &
Примечание. Интерактивные команды shell (например, read ) нельзя запускать в фоновом режиме.
Когда вы запускаете команду в фоновом режиме, то система Linux выводит номер процесса. Вы можете использовать этот номер для завершения выполняющейся в фоновом режиме команды. Появившаяся подсказка означает, что терминал свободен и ожидает вашу команду.
Запустить команду в фоновом режиме вы можете только в том случае, если ваш терминал предоставляет вам такую возможность.
Alex Otwagin 2002-12-16
Запуск команд 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
Можно указать номер конкретного задания, которое нужно вывести из фонового режима:
$ 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 &
Символом плюс + помечается последнее запущенное задание. Если использовать команду fg без аргументов, то она будет применена именно к этому заданию.
Символом минус — помечается задание, которое было запущено перед последним.
Перевод задания в фоновый режим
Чтобы перевести задание, которое в данный момент работает в приоритетном режиме, в фоновый режим, используется команда bg
Так как задание работает в приоритетном режиме, то вы не можете вводить команды, поэтому сначала нужно приостановить выполнение задания. Для этого используется сочетание клавиш Ctrl+Z
После этого можно выполнить команду 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