Запустить команду linux в фоне

Содержание
  1. Как запускать команды Linux в фоновом режиме
  2. 1. Добавьте амперсанд после вашей команды
  3. 2. Используйте bg для отправки запущенных команд в фоновом режиме
  4. 3. Отправляйте команды в фоновом режиме с помощью nohup
  5. 4. Запускайте фоновые команды, используя системные перенаправления
  6. 5. Настройте выполнение команд Linux в фоновом режиме с помощью disown
  7. 6. Запускайте команды Linux в фоновом режиме с помощью tmux
  8. Оставьте свои команды Linux в фоновом режиме
  9. Как использовать рабочие пространства и активные углы в Linux Mint для повышения производительности
  10. Изменения Linux за эти годы
  11. 12 самых безопасных сайтов для загрузки свободного программного обеспечения Linux
  12. Как управлять фоновыми процессами в Linux
  13. bg: перемещение задачи в фон
  14. Как сразу приступить к выполнению команды в фоне
  15. jobs: команда для проверки задач в текущем терминале
  16. kill% n: прекращение выполнения задания с идентификатором n
  17. fg: команда для перемещения задачи в интерактивный режим
  18. Команда ps позволяет увидеть все процессы
  19. Выводы

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

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

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

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

1. Добавьте амперсанд после вашей команды

Самый простой способ запустить фоновую команду Linux — добавить символ амперсанда ( & ) после команды. Например, если вы запустите текстовый редактор gedit со своего терминала, вы не сможете использовать оболочку, пока не закроете редактор. Однако, когда вы добавите дополнительный & к своей команде, вы сможете сразу же использовать оболочку.

2. Используйте bg для отправки запущенных команд в фоновом режиме

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

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

3. Отправляйте команды в фоновом режиме с помощью nohup

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

В приведенном ниже примере выполняется простое сканирование портов Nmap в фоновом режиме.

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

Читайте также:  Linux remove files in file

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

Вы также можете запускать фоновые команды в Linux, используя системные перенаправления. Например, если вы запустите приведенную ниже команду ping , ваша оболочка выполнит ее в фоновом режиме и немедленно вернет вам управление терминалом.

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

5. Настройте выполнение команд Linux в фоновом режиме с помощью disown

Команда disown упрощает запуск процессов в фоновом режиме. Во-первых, вам нужно отправить задачу в фоновый режим с помощью оператора & . Затем введите disown , чтобы отсоединить его от вашей оболочки.

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

6. Запускайте команды Linux в фоновом режиме с помощью tmux

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

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

Оставьте свои команды Linux в фоновом режиме

Возможность запускать команды в фоновом режиме делает управление системой более продуктивным для администраторов. Вы можете отправлять свои задачи в фоновый режим несколькими способами. Функции Bash, такие как символ & и Ctrl + Z , удобны, но система завершит фоновое задание при закрытии оболочки.

С другой стороны, такие инструменты, как nohup и disown , поддерживают выполнение вашей команды, даже когда вы выходите из системы или завершаете работу оболочки.

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

Смотрите другие статьи на нашем канале .

Как использовать рабочие пространства и активные углы в Linux Mint для повышения производительности

Изменения Linux за эти годы

12 самых безопасных сайтов для загрузки свободного программного обеспечения Linux

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

Источник

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

Светящаяся башня на фоне более темных высотных зданий ночью.

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

Читайте также:  Расширение дискового пространства linux

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

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

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

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

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

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

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

shaikh@shaikhu-com:~$ vmstat 5 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 0 3045156 167484 2449380 0 0 80 56 469 1138 19 5 76 0 0 1 0 0 3044644 167492 2450152 0 0 0 92 299 604 2 1 98

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

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

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

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

shaikh@shaikhu-com:~$ vmstat 5 >> vmstat.txt

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

shaikh@shaikhu-com:~$ vmstat 5 >> vmstat.txt ^Z [1]+ Stopped vmstat 5 >> vmstat.txt shaikh@shaikhu-com:~$ bg [1]+ vmstat 5 >> vmstat.txt & shaikh@shaikhu-com:~$

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

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

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

shaikh@shaikhucom:~$ sleep 400 & [2] 11122 shaikh@shaikhucom:~$

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

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

shaikh@shaikhucom:~$ jobs [1]- Running vmstat 5 >> vmstat.txt & [2]+ Running sleep 400 & shaikh@shaikhucom:~$

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

Читайте также:  Apache ротация логов linux

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

shaikh@shaikhucom:~$ jobs -l [1]- 10216 Running vmstat 5 >> vmstat.txt & [2]+ 11122 Running sleep 400 & shaikh@shaikhucom:~$

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

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

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

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

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

haikh@shaikhu-com:~$ jobs [1]- Running vmstat 5 >> vmstat.txt & [2]+ Running sleep 400 & shaikh@shaikhucom:~$ kill %2 shaikh@shaikhucom:~$ jobs [1]+ Running vmstat 5 >> vmstat.txt & shaikh@shaikhucom:~$

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

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

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

shaikh@shaikhucom:~$ jobs [1] Running vmstat 5 >> vmstat.txt & [2]- Running sleep 400 & [3]+ Running sleep 500 & shaikh@shaikhucom:~$ fg sleep 500 [2] Done sleep 400 shaikh@shaikhucom:~$

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

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

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

  • ps ax — чтобы увидеть все процессы, недавно активные в системе. Список будет очень длинным, поэтому добавьте в конвейер less или more.
  • ps T — чтобы увидеть все процессы, выполняемые в текущем терминале.
shaikh@shaikhucom:~$ ps T PID TTY STAT TIME COMMAND 5786 pts/0 Ss 0:00 bash 10216 pts/0 S 0:00 vmstat 5 12983 pts/0 R+ 0:00 ps T shaikh@shaikhucom:~$

Выводы

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

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

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

Источник

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