Служба с терминалом Linux по умолчанию ведется в однозадачном режиме. Это означает, что любая запущенная бригада блокирует терминал до своего завершения. Такой подход не удобен при запуске программ, спрашивающих продолжительного времени выполнения. Данную проблему можно решить двумя способами: раскрыть дополнительное окно терминала и выполнить в нем другую команду или использовать фоновый режим. Все нынешние операционные системы, в том числе и Linux, являются многозадачными, что подразумевает под собой возможность синхронного выполнения множества программ.
- Запуск команд в фоновом режиме в Linux
- Найти команды, работающие в фоновом режиме в Linux
- Кончить выполнение команд, работающих в фоновом режиме
- Возврат програмки в приоритетный режим в Linux
- Видео по теме: Запустить процесс в фоне в Linux
- Виртуальный сервер на базе Linux
- Синтаксис
- Примеры
- Как найти задания, работающие в фоновом режиме?
- Как прекратить выполнение заданий, работающих в фоновом режиме?
- Как переместить процесс из фонового режима в приоритетный?
- Краткое описание всех полезных команд
Запуск команд в фоновом режиме в Linux
Как запустить бригаду в фоновом режиме, чтобы сразу получить доступ к интерфейсу командной строки? Бригада, выполнение которой было запланировано принудительно, называется фоновым процессом. Фоновые процессы не показываются на экране. Например, HTTPD-сервер Apache работает в фоновом режиме для обслуживания веб-страниц. В низкоприоритетный режим можно поместить скрипт оболочки или любую команду. Задачу (например, бригаду или скрипт) можно перевести в фоновый режим, добавив символ «&» в конец командной строчки. Этот оператор переводит команду в фоновый режим и освобождает место в терминале. Бригада, выполняемая в фоновом режиме, называется заданием. Во время работы фоновой команды возможно выполнять любые другие команды. Синтаксис выглядит следующим образом:
command & script-name & /path/to/command arg1 arg2 & command-1 | command-2 arg1 & command-1 | command-2 -arg1 -arg2 >/path/to/output &
Для пуска программ в фоновом режиме, не блокирующем окно терминала, необходимо использовать специальный инструктор «&». Поставьте этот символ в самом конце строки после указания фамилии команды, опций и входящих параметров. В общем виде данную последовательность можно вписать как «имя_команды —опция входящий_параметр &».
/test-file.txt &
[1] 18960
После нажатия кнопки Enter программа автоматически запустится в фоновом режиме. При этом терминал покажет строчку со следующим содержимым «[номер_задания] идентификатор_процесса», и выдаст приглашение к вводу новоиспеченной команды.
Найти команды, работающие в фоновом режиме в Linux
Выполните следующую бригаду:
Пример вывода данных:
[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. Синтаксис выглядит следующим образом:
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>
Видео по теме: Запустить процесс в фоне в Linux
Как запустить команду в фоновом режиме, чтобы сразу получить доступ к интерфейсу командной строки?
Команда, выполнение которой было запланировано принудительно, называется фоновым процессом. Фоновые процессы не отображаются на экране. Например, HTTPD-сервер Apache работает в фоновом режиме для обслуживания веб-страниц. В фоновый режим можно поместить скрипт оболочки или любую команду.
Виртуальный сервер на базе Linux
- Бесплатное тестирование
- Безлимитный трафик
- От 318 руб./мес.
Синтаксис
Задачу (например, команду или скрипт) можно перевести в фоновый режим, добавив символ «&» в конец командной строки. Этот оператор переводит команду в фоновый режим и освобождает место в терминале. Команда, выполняемая в фоновом режиме, называется заданием. Во время работы фоновой команды можно выполнять любые другие команды. Синтаксис выглядит следующим образом:
command & script-name & /path/to/command arg1 arg2 & command-1 | command-2 arg1 & command-1 | command-2 -arg1 -arg2 >/path/to/output &
Примеры
Чтобы перевести команду ls в фоновый режим, введите:
$ ls *.py > output.txt &
Чтобы перевести следующую команду поиска в фоновый режим, добавьте символ «&» в конец командной строки:
find . -iname «*.mp3» > myplaylist.txt &
Как найти задания, работающие в фоновом режиме?
Выполните следующую команду:
jobs
Пример вывода данных:
Где
[1] и [2] идентификаторы заданий.
Чтобы отобразить идентификаторы процессов для идентификаторов заданий помимо стандартных сведений, передайте параметр -l: jobs –l
Пример вывода данных:
Чтобы отобразить только идентификаторы процессов, введите:
jobs -p
Пример вывода данных:
Как прекратить выполнение заданий, работающих в фоновом режиме?
Для принудительного или постепенного завершения процесса следует использовать команду kill. Синтаксис выглядит следующим образом:
Как переместить процесс из фонового режима в приоритетный?
Сначала следует вывести список текущих заданий с помощью команды jobs. Для этого введите: jobs -l
Пример вывода данных:
Чтобы перевести задание job id #2 в приоритетный режим, введите: %2 ИЛИ используйте команду: fg 2
Пример вывода данных:
Чтобы перевести это задание обратно в фоновый режим, нажмите клавишу Z, удерживая клавишу CTRL. При этом выполнение текущего приоритетного задания будет приостановлено. Введите следующую команду, чтобы перевести задание в фоновый режим:
%2 &
ИЛИ используйте команду: bg
Теперь командное задание grep будет работать в фоновом режиме.
Краткое описание всех полезных команд
Описание | Команда |
---|---|
Идентификация выполняемых заданий. | jobs jobs -l ps aux |
Перевод команды или скрипта в приоритетный режим. | command & /path/to/command & /path/to/script arg1 & |
Перевод фонового задания в приоритетный режим. | fg n %n |
Перевод задания в фоновый режим без его отмены | bg n %n & |
Примечание: n — это id задания (id задания можно узнать, выполнив команду jobs).
Все запущенные программы в системе Linux называются процессами.
У каждого пользователя есть права управления только теми процессами , которые были запущены под данным пользователем. Но, пользователь root имеет права на управление любыми процессами системы.
Управление процессами возможно следующими командами:
Перевод программы в фоновый режим.
Программа может быть запущена в двух вариантах: в фоновом режиме (background) bg и на переднем плане (foreground) fg.
Что бы запустить программу или скрипт в фоновом режиме нужно добавить символ & в конце строки-команды, через пробел:
Если вы хотели запустить процесс в фоновом режиме, но забыли добавить в конец команды &, то в можно просто перевести процесс в фоновый режим через команду bg:
1. Забыли запустить программу в фоновом режиме:
2. Приостанавливаем процесс:
3. Вводим команду bg, которая запустит процесс, но уже в фоновом режиме:
Список фоновых процессов можно посмотреть через команду:
Вывод процесса из фонового режима.
Если вам нужно вернуть программу из фонового режима на передний план, делаем следующее.
Если нам нужно вывести последний запущенный в фоне процесс, то просто вводим команду:
fg.
Если нам нужно вывести из фонового режима определенный процесс, то вводим:
, где %3 это номер запущенного процесса из команды jobs.