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

Что делать, когда надо запустить другую команду? Можно открыть еще одну сессию терминала, но можно обойтись и без этого. Давайте рассмотрим, как управлять фоновыми и приоритетными процессами в Linux.

Но сначала давайте разберемся, что такое фоновый и приоритетный процесс.

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

Примером может быть выполнение любой команды в текущей сессии.

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

Наиболее распространенный пример процесса, работающего в фоне, — веб-сервер.

Давайте попробуем запустить команду vmstat.

Эта команда показывает использование памяти и cpu в режиме реального времени. В качестве опции указываем 5 — это задержка перед выводом обновленных данных. Команда каждые 5 секунд будет выводить новую строку с данными, пока вы не прервете ее выполнение (пока не завершите начатый процесс). Для этого надо нажать CTL + C. А если вы хотите поставить процесс на паузу или остановить, надо нажать CTL + Z.

Linux — запуск процессов в фоновом режиме | UnixHost

bg: перемещение задачи в фон

Предположим, вы хотите переместить в фон задание, выполнение которого уже началось (чтобы можно было делать в терминале что-то другое). Для этого надо нажать CTL + Z, а затем запустить команду bg (сокращение от background).

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

Давайте поставим эту задачу на паузу, нажав CTL + Z, а затем выполним команду bg.

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

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

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

jobs: команда для проверки задач в текущем терминале

С помощью этой команды можно вывести все задачи, которые запущены в текущем терминале.

Читайте также:
Комплексные программы объединяющие десятки монопроектов это

Номера в квадратных скобках [n] это номера (или идентификаторы) задач. Нумерация начинается с единицы. Знак «+» указывает на процесс, который был запущен последним, а «-» — на предпоследний процесс.

Если вы хотите увидеть идентификаторы самих процессов, надо использовать опцию -l:

Номера 10216 и 11122 — это идентификаторы процессов.

Возможные опции, которые можно использовать с командой jobs:

  • -l — вывести список идентификаторов процессов в дополнение к обычной информации
  • -n — перечислить только процессы, изменившие статус с последнего сообщения
  • -r — ограничить вывод только запущенными задачами
  • -s — ограничить вывод только остановленными задачами.

kill% n: прекращение выполнения задания с идентификатором n

Для прерывания заданий используется команда kill. Чтобы указать, какое именно задание надо прекратить выполнять, используется знак %, за которым следует номер задания.

Управление процессами в Linux Перевести процесс в фоновый режим

Как видите, теперь у нас только один процесс в фоне. Причем знак «+» показывает, что это последняя из запущенных задач.

fg: команда для перемещения задачи в интерактивный режим

Чтобы переместить задачу в активное окно терминала (на передний план), используется команда fg (сокращение от foreground). По умолчанию (то есть, если не указать никаких опций), на передний план переместится процесс, который был запущен последним.

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

Команда ps позволяет увидеть все процессы

Чтобы увидеть все активные процессы, используйте команду ps. При этом можно добавить следующие опции:

  • ps ax — чтобы увидеть все процессы, недавно активные в системе. Список будет очень длинным, поэтому добавьте в конвейер less или more.
  • ps T — чтобы увидеть все процессы, выполняемые в текущем терминале.

Выводы

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

Команда, запущенная в консоли, слишком долго выполняется? Не проблема, ведь можно просто запустить еще одно окно терминала. Кроме того, существует 6 методов запустить команду консоли в фоновом режиме (background) [1].

Команды Linux — хороший способ взаимодействия с операционной системой, используя терминал (x-terminal-emulator [2], putty, и т. п.). Однако иногда на выполнение поставленной задачи может уйти некоторое время. Это вынуждает пользователей либо ждать в течение некоторого времени, пока процесс завершится, либо вообще запустить новый шелл. К счастью, Linux позволяет запускать команды в фоне с помощью нескольких простых методов.

[Метод 1. Добавление ). Например, вы можете захотеть запустить в терминале текстовый редактор gedit, и если просто выполнить команду gedit, то вы не сможете использовать эту командную строку шелла, пока не закроете окно редактора. Однако если добавить

Commands in Background fig01

[Метод 2. Использование bg]

Читайте также:
Минимальная составляющая часть таблицы в программе

Иногда команда выполняется только для того, чтобы выяснить, что требуется гораздо больше времени для её завершения. Такую команду проще всего отправить работать в фоновый режим путем нажатия клавиш Ctrl+Z, после чего можно использовать команду bg . Ctrl+Z остановит запущенный процесс, и командой bg его можно запустить в фоне.

Commands in Background fig02

Список запущенных в фоне задач можно посмотреть командой jobs . Использует команду fg , чтобы переключиться обратно на запущенную задачу.

[Метод 3. Использование nohup]

Команда nohup в Linux позволяет админам запустить команды терминала, на которые не влияют сигналы HUP или Hang Up. Вы можете просто запустить команды в фоне, используя команду nohup.

Пример ниже запускает в фоне простое сканирование портов утилитой Nmap.

nohup sudo nmap -sS —top-ports=15 192.168.1.1/24

Одно из ключевых достоинств nohup в том, что ваши команды продолжат работу, даже когда вы завершите окно терминала. Кроме того, во время выполнения генерируются лог-файлы. Посмотрите файл nohup.out в текущей директории, или в директории $HOME.

Commands in Background fig03

[Метод 4. System Redirect]

Вы также можете запустить команды в фоне, используя систему перенаправлений Linux (system redirect). Например, если вы запустите команду ping, как в примере ниже, то ваш шелл запустит её в фоне и немедленно возвратит вам контроль над командной строкой терминала.

ping -c5 8.8.8.8 >output.log 2>

Ниже показан вывод команды ping, перенаправленный в файл output.log. Вы можете заменить этот файл на /dev/null, если хотите отбросить результат. Порция 2> сигнализирует Bash запустить команду в фоне.

Commands in Background fig04

[Метод 5. Использование disown]

Команда disown упрощает запуск процессов в фоне. Сначала нужно отправить команду на фоновое выполнение, используя disown

Commands in Background fig05

Основное достоинство disown в том, что как и для nohup, система не прибьет вашу задачу, когда вы закроете её родительский шелл или разлогиньтесь.

[Метод 6. Использование tmux]

Комада tmux это мощный переключатель, который позволяет запустить несколько сессий терминала в одном окне.

tmux new -d ‘ping -c 10 8.8.8.8 > output.log’

Commands in Background fig06

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

[Команды, работающие в фоне]

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

[Ссылки]

1. How to Run Linux Commands in the Background site:makeuseof.com.
2. Горячие клавиши x-terminal-emulator.

Источник: microsin.net

Как запустить процесс в фоновом режиме в Linux/Unix?

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

Читайте также:
Какова главная цель программы мы твои друзья

В этой статье мы обсудим, как запустить процесс в фоновом режиме в Linux или Unix.

Два способа запуска процесса

Процесс можно запустить двумя способами:

1. На переднем плане –

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

2. На заднем фоне –

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

Зачем нам нужно запускать процесс в фоновом режиме?

Предположим, у вас есть длительная задача, выполнение которой может занять до нескольких минут. По умолчанию процесс запускается на переднем плане и может принимать данные от пользователя. Таким образом, он держит терминал занятым до тех пор, пока задача не будет завершена. Фоновый процесс запускается независимо от оболочки, оставляя терминал свободным для другой работы.

Не всегда разумно ждать завершения длительной задачи. Тогда что вы можете сделать? Вы можете запустить длительную задачу в фоновом режиме или отправить текущую задачу в фоновый режим.

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

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

Как только вы выполните эту команду, она покажет идентификатор задания и идентификатор процесса. Теперь, если вы посмотрите на изображение выше, 1 в квадратных скобках — это идентификатор задания, а 4397 — идентификатор процесса.

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

работы

Эта команда выведет список всех заданий с их идентификатором задания и статусом.

Теперь, чтобы вывести фоновый процесс на передний план, используйте следующую команду:

Или, если у вас несколько рабочих мест, используйте —

фг %Job_Id
fg% 1

Перемещение процесса переднего плана на задний план

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

1. Нажмите ctrl + z чтобы остановить процесс, это приостановит процесс, но все еще будет существовать в системе.

2. Вы можете проверить приостановленный процесс с помощью jobs команду

3. Теперь выполните –

Заключение

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

Источник: cyanogenmods.org

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru