- Как запускать команды Linux в фоновом режиме
- Запуск команды Linux в фоновом режиме
- Переместить процесс переднего плана на задний план
- Сохранение фоновых процессов после выхода из оболочки
- Альтернативы
- Экран
- Выводы
- Запуск фоновой команды linux
- Запускаем команду Linux в фоновом режиме
- Перенос процесса с переднего плана в фоновый режим
- Поддерживание фоновых процессов в рабочем состоянии после выхода оболочки
- Как запускать команды Linux в фоновом режиме
- How to Run Linux Commands in Background
- В этой статье мы поговорим о фоновых процессах Linux. Мы покажем вам, как запустить команду в фоновом режиме и как сохранить процесс работающим после закрытия сеанса оболочки.
- Запустите команду Linux в фоновом режиме
- Переместить процесс переднего плана в фон
- Поддерживать выполнение фоновых процессов после выхода из оболочки
- Альтернативы
- Screen
- Вывод
- Как запустить процесс в фоне Linux
- Как запустить процесс в фоне Linux
- Как перевести процесс в фоновый режим
- Работа процессов в фоне
- Выводы
Как запускать команды Linux в фоновом режиме
Обычно, когда вы запускаете команду в терминале, вам нужно дождаться завершения команды, прежде чем вы сможете ввести другую. Это называется запуском команды в процессе переднего плана или переднего плана. Когда процесс выполняется на переднем плане, он занимает вашу оболочку, и вы можете взаимодействовать с ним, используя устройства ввода.
Что делать, если выполнение команды занимает много времени, а вы тем временем хотите выполнить другие команды? В вашем распоряжении несколько вариантов. Самый очевидный и простой вариант — запустить новый сеанс оболочки и запустить в нем команду. Другой вариант — запустить команду в фоновом режиме.
Фоновый процесс — это процесс / команда, который запускается с терминала и выполняется в фоновом режиме без взаимодействия с пользователем.
В этой статье мы поговорим о фоновых процессах Linux. Мы покажем вам, как запустить команду в фоновом режиме и как сохранить выполнение процесса после закрытия сеанса оболочки.
Запуск команды Linux в фоновом режиме
Чтобы запустить команду в фоновом режиме, добавьте символ амперсанда ( & ) в конце команды:
Идентификатор задания оболочки (в скобках) и идентификатор процесса будут напечатаны на терминале:
Вы можете одновременно запускать несколько процессов в фоновом режиме.
Фоновый процесс продолжит писать сообщения в терминал, из которого вы вызвали команду. Чтобы подавить сообщения stdout и stderr используйте следующий синтаксис:
>/dev/null 2>&1 означает перенаправление stdout на /dev/null и stderr на stdout .
Используйте утилиту jobs для отображения состояния всех остановленных и фоновых заданий в текущем сеансе оболочки:
Вывод включает номер задания, идентификатор процесса, состояние задания и команду, запустившую задание:
Чтобы вывести фоновый процесс на передний план, используйте команду fg :
Если у вас несколько фоновых заданий, укажите % и идентификатор задания после команды:
Чтобы завершить фоновый процесс, используйте команду kill за которой следует идентификатор процесса:
Переместить процесс переднего плана на задний план
Чтобы переместить запущенный процесс переднего плана в фоновый режим:
- Остановите процесс, нажав Ctrl+Z
- Переместите остановленный процесс на задний план, набрав bg .
Сохранение фоновых процессов после выхода из оболочки
Если ваше соединение разрывается или вы выходите из сеанса оболочки, фоновые процессы прекращаются. Есть несколько способов сохранить выполнение процесса после завершения сеанса интерактивной оболочки.
Один из способов — удалить задание из управления заданиями оболочки с помощью встроенной команды disown shell:
Если у вас несколько фоновых заданий, укажите % и идентификатор задания после команды:
Подтвердите, что задание удалено из таблицы активных заданий, используя команду jobs -l . Чтобы перечислить все запущенные процессы, включая отключенные, используйте команду ps aux .
Еще один способ сохранить выполнение процесса после выхода из оболочки — использовать nohup .
Команда nohup выполняет другую программу, указанную в качестве аргумента, и игнорирует все сигналы SIGHUP (зависание). SIGHUP — это сигнал, который отправляется процессу, когда его управляющий терминал закрыт.
Чтобы запустить команду в фоновом режиме с помощью команды nohup , введите:
Вывод команды перенаправляется в файл nohup.out .
Если вы выйдете из системы или закроете терминал, процесс не завершится.
Альтернативы
Существует ряд программ, позволяющих проводить несколько интерактивных сеансов одновременно.
Экран
Экран или GNU Screen — это программа-мультиплексор терминала, которая позволяет запускать сеанс экрана и открывать любое количество окон (виртуальных терминалов) внутри этого сеанса. Процессы, запущенные в Screen, будут продолжать работать, если их окно не отображается, даже если вы отключитесь.
Tmux — это современная альтернатива GNU screen. С помощью Tmux вы также можете создать сеанс и открыть несколько окон внутри этого сеанса. Сеансы Tmux являются постоянными, что означает, что программы, запущенные в Tmux, продолжают работать, даже если вы закроете терминал.
Выводы
Чтобы запустить команду в фоновом режиме, включите & в конце команды.
Когда вы запускаете команду в фоновом режиме, вам не нужно ждать ее завершения, прежде чем вы сможете выполнить другую.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Источник
Запуск фоновой команды linux
Обычно, когда вы запускаете команду в терминале, вам нужно подождать, пока команда не завершится, прежде чем вы сможете ввести другую. Это называется запуском команды на переднем плане или процесс переднего плана. Когда процесс запускается на переднем плане, он захватывает вашу оболочку, и вы можете взаимодействовать с ней с помощью устройств ввода.
Что если выполнение команды займет много времени, а вы хотите выполнить другие команды в это время? В вашем распоряжении несколько вариантов. Самая очевидная и простая опция — запустить новый сеанс командной строки и запустить в нем команду. Другой вариант — запуск команды в фоновом режиме.
Фоновый процесс — это процесс/команда, запускаемая с терминала и выполняемая в фоновом режиме, без взаимодействия с пользователем.
В этой статье мы поговорим о фоновых процессах Linux. Мы покажем вам, как запустить команду в фоновом режиме и как держать процесс запущенным после завершения сеанса командной строки.
Запускаем команду Linux в фоновом режиме
Чтобы выполнить команду в фоновом режиме, добавьте символ амперсанда ( & ) в конец команды:
ID задания (окруженное скобками) и ID процесса напечатаются в терминале:
В фоновом режиме можно запускать несколько процессов одновременно. В данном случае фоновый процесс будет продолжать писать сообщения в терминал, с которого вы вызвали команду. Для подавления сообщений stdout и stderr используйте следующий синтаксис:
/dev/null 2>&1 означает перенаправление stdout на /dev/null и stderr на stdout .
Используйте утилиту jobs для отображения статуса всех остановленных и фоновых заданий в текущем сеансе командной строки:
На выходе отображается номер задания, идентификатор процесса, состояние задания и команда, с помощью которой оно было запущено:
Чтобы вывести фоновый процесс на передний план, используйте команду fg :
Если у вас несколько фоновых заданий, укажите % и ID задания после команды:
Чтобы завершить фоновый процесс, используйте команду kill , за которой следует ID процесса:
Перенос процесса с переднего плана в фоновый режим
Перемещение выполняющегося процесса с переднего плана в фоновый режим:
- Остановите процесс, нажав Ctrl+Z .
- Переместите остановленный процесс в фоновый режим, набрав bg .
Поддерживание фоновых процессов в рабочем состоянии после выхода оболочки
Если ваше соединение прервется или вы выйдете из сессии командной строки, фоновые процессы будут прерваны. Существует несколько способов сохранить процесс после завершения сеанса интерактивной оболочки. Один из способов — удалить задание из системы управления заданиями оболочки с помощью команды disown :
Если у вас несколько фоновых заданий, укажите % и ID задания после команды:
Убедитесь, что задание удалено из таблицы активных заданий с помощью команды jobs -l . Чтобы перечислить все запущенные процессы, включая процессы, от которых отказались, воспользуйтесь командой ps aux . Другой способ сохранить процесс запущенным после выхода из оболочки — использовать nohup .
Команда nohup выполняет другую команду, указанную в качестве аргумента, и игнорирует все сигналы SIGHUP (зависание). SIGHUP — это сигнал, посылаемый на процесс, когда его управляющая оболочка закрыта.
Чтобы выполнить команду в фоновом режиме с помощью команды nohup , введите ее:
Вывод команды перенаправляется в файл nohup.out .
Если вы выйдете из системы или закроете терминал, процесс не будет завершен.
Источник
Как запускать команды 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
Для выполнения команды в фоновом режиме достаточно добавить в конце символ амперсанда (&):
В выводе терминала будут отображены порядковый номер задачи (в квадратных скобках) и идентификатор процесса:
В фоновом режиме можно одновременно запускать сразу два, три, четыре процесса и даже больше.
Работая в фоновом режиме, команда все равно продолжает выводить сообщения в терминал, из которого была запущена. Для этого она использует потоки stdout и stderr, которые можно закрыть при помощи следующего синтаксиса:
command > /dev/null 2>&1 &
Здесь >/dev/null 2>&1 обозначает, что stdout будет перенаправлен на /dev/null, а stderr — к stdout.
Узнать состояние всех остановленных и выполняемых в фоновом режиме задач в рамках текущей сессии терминала можно при помощи утилиты jobs c использованием опции -l:
Вывод содержит порядковый номер задачи, идентификатор фонового процесса, состояние задачи и название команды, которая запустила задание.
В любое время можно вернуть процесс из фонового режима на передний план. Для этого служит команда fg:
Если в фоновом режиме выполняется несколько программ, следует также указывать номер. Например:
Для завершения фонового процесса применяют команду kill с номером программы:
Как перевести процесс в фоновый режим
Если изначально процесс был запущен обычным способом, его можно перевести в фоновый режим, выполнив следующие действия:
- Остановить выполнение команды, нажав комбинацию клавиш Ctrl+Z.
- Перевести процесс в фоновый режим при помощи команды bg.
Работа процессов в фоне
Запуск скрипта в фоне linux — это одно, но надо чтобы он ещё работал после закрытия терминала. Закрытие терминала путем нажатия на крестик в верхнем углу экрана влечет за собой завершение всех фоновых процессов. Впрочем, есть несколько способов сохранить их после того как связь с интерактивной оболочкой прервется. Первый способ — это удаление задачи из очереди заданий при помощи команды disown:
Как и в предыдущих случаях, при наличии нескольких одновременно выполняемых процессов следует указывать номер того, относительно которого будет выполнено действие:
Убедиться, что задачи больше нет в списке заданий, можно, использовав уже знакомую утилиту jobs -l. А чтобы просмотреть перечень всех запущенных процессов (в том числе и отключенных) применяется команда
Второй способ сохранить запущенные процессы после прекращения работы терминала — команда nohup. Она выполняет другую команду, которая была указана в качестве аргумента, при этом игнорирует все сигналы SIGHUP (те, которые получает процесс при закрытии терминала). Для запуска команды в фоновом режиме нужно написать команду в виде:
Как видно на скриншоте, вывод команды перенаправляется в файл nohup.out. При этом после выхода из системы или закрытия терминала процесс не завершается. Существует ряд программ, которые позволяют запускать несколько интерактивных сессий одновременно. Наиболее популярные из них — Screen и Tmux.
- Screen либо GNU Screen — это терминальный мультиплексор, который позволяет запустить один рабочий сеанс и в рамках него открыть любое количество окон (виртуальных терминалов). Процессы, запущенные в этой программе, будут выполняться, даже если их окна невидимы или программа прекратила работу.
- Tmux — более современная альтернатива GNU Screen. Впрочем, возможности Tmux не имеют принципиальных отличий — в этой программе точно так же можно открывать множество окон в рамках одного сеанса. Задачи, запущенные в Tmux, продолжают выполняться, если терминал был закрыт.
Выводы
Чтобы запустить скрипт в фоне linux, достаточно добавить в конце знак &. При запуске команд в фоновом режиме отпадает необходимость дожидаться завершения одной команды для того, чтобы ввести другую. Если у вас возникли вопросы, обязательно задавайте их в комментариях.
Источник