- Как запускать команды Linux в фоновом режиме
- How to Run Linux Commands in Background
- В этой статье мы поговорим о фоновых процессах Linux. Мы покажем вам, как запустить команду в фоновом режиме и как сохранить процесс работающим после закрытия сеанса оболочки.
- Запустите команду Linux в фоновом режиме
- Переместить процесс переднего плана в фон
- Поддерживать выполнение фоновых процессов после выхода из оболочки
- Альтернативы
- Screen
- Вывод
- Запуск команд Linux в фоновом режиме (+Видео)
- Видео
- Что такое приоритетный и фоновый режимы
- Как запустить команду в фоновом режиме
- Пример запуска команды в фоновом режиме
- Как вывести задание из фонового режима
- Просмотр заданий, работающих в фоновом режиме
- Перевод задания в фоновый режим
- Заключение
- Запустить процесс в фоне в Linux
- Запуск команд в фоновом режиме в Linux
- Найти команды, работающие в фоновом режиме в Linux
- Кончить выполнение команд, работающих в фоновом режиме
- Возврат програмки в приоритетный режим в Linux
- linux запустить скрипт в фоне
- Запуск команд в фоновом режиме в Linux
- Найти команды, работающие в фоновом режиме в Linux
- Кончить выполнение команд, работающих в фоновом режиме
- Возврат програмки в приоритетный режим в Linux
- Видео по теме: Запустить процесс в фоне в Linux
- Виртуальный сервер на базе Linux
- Синтаксис
- Примеры
- Как найти задания, работающие в фоновом режиме?
- Как прекратить выполнение заданий, работающих в фоновом режиме?
- Как переместить процесс из фонового режима в приоритетный?
- Краткое описание всех полезных команд
Как запускать команды Linux в фоновом режиме
How to Run Linux Commands in Background
В этой статье мы поговорим о фоновых процессах Linux. Мы покажем вам, как запустить команду в фоновом режиме и как сохранить процесс работающим после закрытия сеанса оболочки.
Обычно, когда вы запускаете команду в терминале, вам нужно подождать, пока команда не завершится, прежде чем вы сможете ввести другую. Это называется выполнением команды на переднем или переднем плане процесса. Когда процесс выполняется на переднем плане, он занимает вашу оболочку, и вы можете взаимодействовать с ним, используя устройства ввода.
Что если выполнение команды занимает много времени, а вы хотите выполнять другие команды в это время? У вас есть несколько вариантов в вашем распоряжении. Наиболее очевидный и простой вариант — запустить новый сеанс оболочки и запустить в нем команду. Другой вариант — запустить команду в фоновом режиме.
Фоновый процесс — это процесс / команда, которая запускается из терминала и выполняется в фоновом режиме, без взаимодействия с пользователем.
Запустите команду Linux в фоновом режиме
Чтобы выполнить команду в фоновом режиме, добавьте символ амперсанда ( & ) в конце команды:
Идентификатор задания оболочки (заключенный в квадратные скобки) и идентификатор процесса будут напечатаны на терминале:
Вы можете одновременно запускать несколько процессов в фоновом режиме.
Фоновый процесс будет продолжать записывать сообщения в терминал, из которого вы вызвали команду. Для подавления stdout и stderr сообщения используют синтаксис следующий:
>/dev/null 2>&1 означает перенаправление stdout на /dev/null и stderr к stdout .
Используйте jobs утилиту для отображения состояния всех остановленных и фоновых заданий в текущем сеансе оболочки:
Вывод включает в себя номер задания, идентификатор процесса, состояние задания и команду, запустившую задание:
Чтобы вывести фоновый процесс на передний план, используйте fg команду:
Если у вас есть несколько фоновых заданий, включите % и идентификатор задания после команды:
Чтобы завершить фоновый процесс, используйте kill команду, за которой следует идентификатор процесса:
Переместить процесс переднего плана в фон
Чтобы переместить запущенный процесс переднего плана в фоновом режиме:
- Остановите процесс, набрав Ctrl+Z .
- Переместите остановленный процесс в фоновом режиме, набрав bg .
Поддерживать выполнение фоновых процессов после выхода из оболочки
Если ваше соединение прерывается или вы выходите из сеанса оболочки, фоновые процессы завершаются. Есть несколько способов сохранить процесс после завершения сеанса интерактивной оболочки.
Одним из способов является удаление задания из управления заданиями оболочки с помощью disown встроенной оболочки:
Если у вас есть несколько фоновых заданий, включите % и идентификатор задания после команды:
Убедитесь, что задание удалено из таблицы активных заданий с помощью jobs -l команды. Для просмотра списка всех запущенных процессов, в том числе отключенных, используйте ps aux команду.
Другой способ сохранить процесс запущенным после выхода из оболочки — использовать nohup .
Команда nohup выполняет другую программу, указанную в качестве аргумента, и игнорирует все SIGHUP сигналы (зависания). SIGHUP это сигнал, который отправляется процессу, когда его управляющий терминал закрыт.
Чтобы запустить команду в фоновом режиме, используя nohup команду, введите:
Вывод команды перенаправляется в nohup.out файл.
Если вы выйдете из системы или закроете терминал, процесс не прекратится.
Альтернативы
Есть ряд программ, которые позволяют вам иметь несколько интерактивных сессий одновременно.
Screen
Screen или GNU Screen — это программа мультиплексора терминала, которая позволяет запустить сеанс экрана и открыть любое количество окон (виртуальных терминалов) внутри этого сеанса. Процессы, запущенные в Screen, будут продолжать работать, когда их окно не видно, даже если вы отключены.
Tmux — современная альтернатива экрану GNU. С Tmux вы также можете создать сеанс и открыть несколько окон внутри этого сеанса. Сеансы Tmux являются постоянными, что означает, что программы, работающие в Tmux, продолжают работать, даже если вы закрываете терминал.
Вывод
Чтобы запустить команду в фоновом режиме, включите & в конце команды.
Когда вы запускаете команду в фоновом режиме, вам не нужно ждать, пока она не завершится, прежде чем вы сможете выполнить еще одну.
Источник
Запуск команд Linux в фоновом режиме (+Видео)
В данной заметке мы рассмотрим, как запускать команды Linux в фоновом режиме. То есть, когда после запуска какой-либо команды, она начинает свою работу в фоне, а вы продолжаете работать в терминале.
Видео
Видео-версия. Наше видео про запуск команд в фоновом режиме.
Что такое приоритетный и фоновый режимы
Обычно все команды Linux запускаются в оболочке (в командной строке) в приоритетном режиме, называемом foreground. В этом режиме оболочка ожидает завершения работы команды, прежде чем пользователь сможет ввести новую команду.
Можно запускать команды Linux в фоновом режиме — background, при котором не нужно ожидать завершения команды, чтобы запустить другую команду.
Пользователь может запускать несколько команд в фоновом режиме одновременно. То есть эти команды будут выполняться параллельно. При этом окно терминала доступно для ввода новых команд.
Как запустить команду в фоновом режиме
Чтобы запустить команду в фоновом режиме, нужно в конец команды через пробел добавить знак амперсанда &
Синтаксис запуска команды в фоновом режиме можно записать следующим образом:
Пример запуска команды в фоновом режиме
Рассмотрим пример. Предположим, нам нужно распаковать большой tar-архив. Выполняем команду:
Распаковка архива выполняется в фоновом режиме, а мы можем вводить в терминале новые команды.
Как вы можете видеть, на экран выводятся символы [1] 7958
[1] — это номер, который оболочка назначила нашему фоновому заданию, чтобы мы могли идентифицировать его и управлять им (см. ниже как).
7958 — это идентификатор (PID) процесса, который был создан.
Как вывести задание из фонового режима
Если вы запустили один или несколько процессов в фоновом режиме, то вы можете подключиться к любому из них и вывести из фонового режима (перевести в приоритетный режим). Для этого используется команда fg
Команда fg , запущенная без аргументов, выводит из фонового режима последний запущенный фоновый процесс.
Например, запустим две команды в фоновом режиме и выполним команду fg . В результате мы выведем вторую команду из фонового режима.
Можно указать номер конкретного задания, которое нужно вывести из фонового режима:
Просмотр заданий, работающих в фоновом режиме
Для просмотра заданий, работающих в фоновом режиме, используется команда jobs
Символом плюс + помечается последнее запущенное задание. Если использовать команду fg без аргументов, то она будет применена именно к этому заданию.
Символом минус — помечается задание, которое было запущено перед последним.
Перевод задания в фоновый режим
Чтобы перевести задание, которое в данный момент работает в приоритетном режиме, в фоновый режим, используется команда bg
Так как задание работает в приоритетном режиме, то вы не можете вводить команды, поэтому сначала нужно приостановить выполнение задания. Для этого используется сочетание клавиш Ctrl+Z
После этого можно выполнить команду bg , чтобы продолжить выполнение задания, но уже в фоновом режиме.
Заключение
Мы кратко рассмотрели, как запускать команды 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 требует указать номер задания в качестве параметра, а к % его нужно подставить сходу после оператора без пробелов.
Источник
linux запустить скрипт в фоне
Для возможности выполнения bash-подобных скриптов в Linux в с целом и в OpenWrt-версии оболочки busybox в частности существует легкая в применении инфраструктура: необходимо лишь добавить к строке запускаемого скрипта символ “&“. Но есть и менее очевидные частности.
Реализация простого запуска некоторого скрипта /srv/tools/script.sh в фоне:
Все бы хорошо, но запущенный таким образом скрипт проработает ровно до тех пор, пока вы залогинены на консоль сервера. При отключении от сервера скрипт автоматически завершится.
Для запуска скрипта без связи с сессией пользователя следует использовать утилиту nohup:
В этом случае запущенный скрипт останется работать даже при отключении от сервера, но весь выводимый скриптом текст будет записываться в файл nohup.log, создаваемый в текущем каталоге, о чем nohup непосредственно и информирует сообщением nohup: appending output to nohup.out. При этом данный файл будет создан даже в том случае, если у скрипта никогда не будет никакого вывода.
Чтобы nohup.log никогда не создавался, перенаправляем stdout скрипта в /dev/null:
Все, теперь лишних файлов более не создается и скрипт останется работать при отключении от консоли.
Служба с терминалом 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).
Источник