Запустить фоновом режиме linux

Содержание
  1. Как запускать команды Linux в фоновом режиме
  2. Запуск команды Linux в фоновом режиме
  3. Переместить процесс переднего плана на задний план
  4. Сохранение фоновых процессов после выхода из оболочки
  5. Альтернативы
  6. Экран
  7. Tmux
  8. Выводы
  9. Запуск команд Linux в фоновом режиме (+Видео)
  10. Видео
  11. Что такое приоритетный и фоновый режимы
  12. Как запустить команду в фоновом режиме
  13. Пример запуска команды в фоновом режиме
  14. Как вывести задание из фонового режима
  15. Просмотр заданий, работающих в фоновом режиме
  16. Перевод задания в фоновый режим
  17. Заключение
  18. Команды Linux: как работает nohup
  19. Синтаксис команды nohup
  20. Проверка версии nohup
  21. Запуск процесса с помощью Nohup
  22. Запуск процесса в фоновом режиме
  23. Заключение
  24. Запуск команд Linux в фоновом и приоритетном режимах
  25. Запуск процесса Linux в фоновом режиме напрямую
  26. Отправка работающего процесса Linux в фоновый режим
  27. Просмотр всех процессов, работающих в фоновом режиме
  28. Выводим процесс из фонового режима

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

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

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

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

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

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

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

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

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

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

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

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

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

[1]+ 25177 Running ping google.com & 

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

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

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

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

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

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

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

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

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

Читайте также:  Linux password protect zip

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

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

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

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

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

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

nohup: ignoring input and appending output to 'nohup.out' 

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

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

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

Экран

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

Tmux

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

Выводы

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

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

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

Источник

Запуск команд Linux в фоновом режиме (+Видео)

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

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

Видео

Видео-версия. Наше видео про запуск команд в фоновом режиме.

Что такое приоритетный и фоновый режимы

Обычно все команды Linux запускаются в оболочке (в командной строке) в приоритетном режиме, называемом foreground. В этом режиме оболочка ожидает завершения работы команды, прежде чем пользователь сможет ввести новую команду.

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

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

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

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

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

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

Рассмотрим пример. Предположим, нам нужно распаковать большой tar-архив. Выполняем команду:

$ tar -xf archive.tar & [1] 7958 $ 

Распаковка архива выполняется в фоновом режиме, а мы можем вводить в терминале новые команды.

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

Как вы можете видеть, на экран выводятся символы [1] 7958
[1] — это номер, который оболочка назначила нашему фоновому заданию, чтобы мы могли идентифицировать его и управлять им (см. ниже как).
7958 — это идентификатор (PID) процесса, который был создан.

Читайте также:  Linux print all environment variables

Как вывести задание из фонового режима

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

Команда fg , запущенная без аргументов, выводит из фонового режима последний запущенный фоновый процесс.

Например, запустим две команды в фоновом режиме и выполним команду fg . В результате мы выведем вторую команду из фонового режима.

$ tar -xf archive1.tar & [1] 8054 $ tar -xf archive2.tar & [2] 8055 $ fg tar -xf archive2.tar

Перевод в приоритетный режим. Команда fg

Можно указать номер конкретного задания, которое нужно вывести из фонового режима:

$ 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 &

Использование команды jobs

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

Перевод задания в фоновый режим

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

Так как задание работает в приоритетном режиме, то вы не можете вводить команды, поэтому сначала нужно приостановить выполнение задания. Для этого используется сочетание клавиш Ctrl+Z

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

Команда bg

Заключение

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

Источник

Команды Linux: как работает nohup

При выходе из оболочки системы Linux все запущенные процессы обычно завершаются или зависают. Но что делать, если вы хотите, чтобы процессы работали даже при выходе из оболочки/терминала? В этом вам поможет команда nohup.

Nohup — это сокращение от no hangup. Эта команда поддерживает в системах Linux работу процессов даже после выхода из оболочки или терминала. Она предотвращает получение процессами или заданиями сигнала SIGHUP ( Signal Hang UP ). Это сигнал, который отправляется процессу при закрытии или выходе из терминала. В этом руководстве мы рассмотрим команду nohup и покажем, как ее можно использовать.

Синтаксис команды nohup

Синтаксис команды выглядит следующим образом:

Давайте же посмотрим, как работает данная команда.

Проверка версии nohup

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

Запуск процесса с помощью Nohup

Если вы хотите, чтобы ваши процессы/задания работали даже после закрытия терминала, укажите необходимую команду в nohup, как показано ниже. Задания будут по-прежнему выполняться и не будут уничтожены при выходе из оболочки или терминала.

Согласно приведенному выше выводу результат команды был сохранен в nohup.out. Чтобы убедиться в этом, запустите:

Кроме того, вы можете перенаправить вывод в другой файл, как показано ниже.

Чтобы просмотреть этот файл, введите:

Чтобы перенаправить в файл и стандартную ошибку, и вывод, используйте атрибут > filename 2>&1 , как показано ниже.

Читайте также:  Change login user in linux

nohup ./hello.sh > myoutput.txt >2&1

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

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

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

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

Заключение

Все процессы, запущенные с помощью команды nohup, будут игнорировать сигнал SIGHUP даже после выхода из оболочки.

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

По умолчанию nohup.out используется как стандартный файл для stdout и stderr.

Источник

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

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

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

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

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

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

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

После завершения выполнения команды в фоновом режиме, появится информация об этом в терминале:

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

Можно отправить уже запущенный процесс в фоновый режим.

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

[test@test-pc ~]$ sleep 60 ^Z [1]+ Остановлен sleep 60 [test@test-pc ~]$ bg [1]+ sleep 60 &

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

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

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

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

jobs [1] Запущен firefox & [2]- Запущен gedit & [3]+ Завершён vim

Выводим процесс из фонового режима

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

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

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

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

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

Источник

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