Linux запустить команду фоном

Содержание
  1. Как управлять фоновыми процессами в Linux
  2. bg: перемещение задачи в фон
  3. Как сразу приступить к выполнению команды в фоне
  4. jobs: команда для проверки задач в текущем терминале
  5. kill% n: прекращение выполнения задания с идентификатором n
  6. fg: команда для перемещения задачи в интерактивный режим
  7. Команда ps позволяет увидеть все процессы
  8. Выводы
  9. Как запускать команды Linux в фоновом режиме
  10. Запуск команды Linux в фоновом режиме
  11. Переместить процесс переднего плана на задний план
  12. Сохранение фоновых процессов после выхода из оболочки
  13. Альтернативы
  14. Экран
  15. Выводы
  16. Как запускать команды Linux в фоновом режиме
  17. How to Run Linux Commands in Background
  18. В этой статье мы поговорим о фоновых процессах Linux. Мы покажем вам, как запустить команду в фоновом режиме и как сохранить процесс работающим после закрытия сеанса оболочки.
  19. Запустите команду Linux в фоновом режиме
  20. Переместить процесс переднего плана в фон
  21. Поддерживать выполнение фоновых процессов после выхода из оболочки
  22. Альтернативы
  23. Screen
  24. Вывод
  25. Запуск команд Linux в фоновом режиме и на переднем плане
  26. Запустите процесс Linux в фоновом режиме напрямую
  27. Отправить работающий процесс Linux в фоновом режиме
  28. Просмотреть все процессы, работающие в фоновом режиме
  29. Вывести процесс на передний план в Linux
  30. Итого

Как управлять фоновыми процессами в Linux

Если вы только начинаете работать с Linux и уже пробовали вводить команды в терминале, вы могли заметить, что для ввода каждой новой команды вам приходится ждать, пока уже начатый процесс завершится. Так происходит потому, что по умолчанию при запуске команды процесс начинается в активном окне терминала, — пишет сайт hexx.in.ua в своем переводе статьи «How to manage background processes in Linux».

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Выводы

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

  • bg и fg — для перемещения задач в фон и обратно, в активное окно;
  • jobs — для вывода списка активных задач в текущем терминале;
  • kill — для прерывания процесса;
  • ps — для вывода списка активных и запущенных процессов.

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

Источник

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

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

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

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

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

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

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

Идентификатор задания оболочки (в скобках) и идентификатор процесса будут напечатаны на терминале:

Вы можете одновременно запускать несколько процессов в фоновом режиме.

Фоновый процесс продолжит писать сообщения в терминал, из которого вы вызвали команду. Чтобы подавить сообщения stdout и stderr используйте следующий синтаксис:

>/dev/null 2>&1 означает перенаправление stdout на /dev/null и stderr на stdout .

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

Вывод включает номер задания, идентификатор процесса, состояние задания и команду, запустившую задание:

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

Если у вас несколько фоновых заданий, укажите % и идентификатор задания после команды:

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

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

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

  1. Остановите процесс, нажав Ctrl+Z
  2. Переместите остановленный процесс на задний план, набрав bg .

Сохранение фоновых процессов после выхода из оболочки

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

Один из способов — удалить задание из управления заданиями оболочки с помощью встроенной команды disown shell:

Если у вас несколько фоновых заданий, укажите % и идентификатор задания после команды:

Подтвердите, что задание удалено из таблицы активных заданий, используя команду jobs -l . Чтобы перечислить все запущенные процессы, включая отключенные, используйте команду ps aux .

Читайте также:  Puppy linux 32 bit ��������� ������

Еще один способ сохранить выполнение процесса после выхода из оболочки — использовать nohup .

Команда nohup выполняет другую программу, указанную в качестве аргумента, и игнорирует все сигналы SIGHUP (зависание). SIGHUP — это сигнал, который отправляется процессу, когда его управляющий терминал закрыт.

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

Вывод команды перенаправляется в файл nohup.out .

Если вы выйдете из системы или закроете терминал, процесс не завершится.

Альтернативы

Существует ряд программ, позволяющих проводить несколько интерактивных сеансов одновременно.

Экран

Экран или GNU Screen — это программа-мультиплексор терминала, которая позволяет запускать сеанс экрана и открывать любое количество окон (виртуальных терминалов) внутри этого сеанса. Процессы, запущенные в Screen, будут продолжать работать, если их окно не отображается, даже если вы отключитесь.

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

Выводы

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

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

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Источник

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

How to Run Linux Commands in Background

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

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

Что если выполнение команды занимает много времени, а вы хотите выполнять другие команды в это время? У вас есть несколько вариантов в вашем распоряжении. Наиболее очевидный и простой вариант — запустить новый сеанс оболочки и запустить в нем команду. Другой вариант — запустить команду в фоновом режиме.

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

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

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

Идентификатор задания оболочки (заключенный в квадратные скобки) и идентификатор процесса будут напечатаны на терминале:

Вы можете одновременно запускать несколько процессов в фоновом режиме.

Фоновый процесс будет продолжать записывать сообщения в терминал, из которого вы вызвали команду. Для подавления stdout и stderr сообщения используют синтаксис следующий:

>/dev/null 2>&1 означает перенаправление stdout на /dev/null и stderr к stdout .

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

Вывод включает в себя номер задания, идентификатор процесса, состояние задания и команду, запустившую задание:

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

Если у вас есть несколько фоновых заданий, включите % и идентификатор задания после команды:

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

Переместить процесс переднего плана в фон

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

  1. Остановите процесс, набрав Ctrl+Z .
  2. Переместите остановленный процесс в фоновом режиме, набрав bg .

Поддерживать выполнение фоновых процессов после выхода из оболочки

Если ваше соединение прерывается или вы выходите из сеанса оболочки, фоновые процессы завершаются. Есть несколько способов сохранить процесс после завершения сеанса интерактивной оболочки.

Одним из способов является удаление задания из управления заданиями оболочки с помощью disown встроенной оболочки:

Если у вас есть несколько фоновых заданий, включите % и идентификатор задания после команды:

Убедитесь, что задание удалено из таблицы активных заданий с помощью jobs -l команды. Для просмотра списка всех запущенных процессов, в том числе отключенных, используйте ps aux команду.

Другой способ сохранить процесс запущенным после выхода из оболочки — использовать nohup .

Команда nohup выполняет другую программу, указанную в качестве аргумента, и игнорирует все SIGHUP сигналы (зависания). SIGHUP это сигнал, который отправляется процессу, когда его управляющий терминал закрыт.

Читайте также:  Readyboost windows 10 для чего

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

Вывод команды перенаправляется в nohup.out файл.

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

Альтернативы

Есть ряд программ, которые позволяют вам иметь несколько интерактивных сессий одновременно.

Screen

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

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

Вывод

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

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

Источник

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

Главное меню » Операционная система Linux » Запуск команд Linux в фоновом режиме и на переднем плане

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

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

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

Запустите процесс Linux в фоновом режиме напрямую

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

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

Давайте возьмем простую команду bash sleep и отправим ее в фоновый режим.

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

Отправить работающий процесс Linux в фоновом режиме

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

Здесь вы должны использовать Ctrl + Z, чтобы приостановить запущенный процесс, а затем использовать bg (сокращение от фона), чтобы отправить процесс в фоновом режиме. Приостановленный процесс теперь будет работать в фоновом режиме.

Давайте возьмем тот же пример, что и раньше.

Просмотреть все процессы, работающие в фоновом режиме

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

Для этого вы можете ввести эту команду в терминал:

Это покажет вам все запущенные задания/процессы/команды в фоновом режиме, как это:

Вывести процесс на передний план в Linux

Хорошо! Итак, вы научились запускать команды в фоновом режиме в Linux. Но как насчет того, чтобы вывести процесс, работающий в фоновом режиме, снова на передний план?

Чтобы отправить команду в фоновый режим, вы использовали «bg». Чтобы вернуть фоновый процесс обратно, используйте команду ‘fg’.

Теперь, если вы просто используете fg, он выведет последний процесс в очереди фоновых заданий на передний план. В нашем предыдущем примере запуск fg вернет редактор Vim в терминал.

Если вы хотите вывести определенный процесс на передний план, вам нужно указать его идентификатор работы. Идентификатор задания – это число, которое вы видите в начале каждой строки в выводе команды ‘jobs’.

Где n – это идентификатор задания, отображаемый в выходных данных командных заданий.

Итого

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

Если у вас есть вопросы или предложения, пожалуйста, оставьте комментарий ниже.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Источник

Оцените статью