Консультация Oblako.kz

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

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

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

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

Перевести команду или скрипт в фоновый режим вы можете реализовать при помощи добавления символа «&» (данный оператор переводит команду в фоновый режим освобождая при этом место в терминале) в конец каждой строки. Команда, которая выполняется в фоновом режиме называется «задание». Стоит напомнить, что при выполнении заданий вы можете выполнять другие команды. Команды и общий синтаксис выглядят следующим образом:

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]-  Running                 find / -iname "*.c" 2> /dev/null > /tmp/output.txt &
[2]+  Running                 grep -R "hostNamed" / 2> /dev/null > /tmp/grep.txt &

Цифры вначале каждой строки являются идентификатором задания.
Теперь нам необходимо получить отображение идентификаторов процессов для соответствующих заданий (за исключением стандартных сведений). Передадим параметр –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 &

Для отображения только идентификаторов процессов, введите команду: jobs -p

Пример:


7307
7324

Остановка заданий запущенных в фоновом режиме

Есть два варианта завершения процесса – принудительное и постепенное. Для этого мы будем использовать команду kill и ее синтаксис выглядит следующим образом:


kill PID
kill -15 PID
kill -9 PID
killall process-Name-Here
killall -15 process-Name-Here
killall -9 process-Name-Here

Перемещение процесса из фонового режима в приоритетный

Синтаксис: %JOB-ID

ИЛИ fg JOB-ID

Выводим список текущих заданий: jobs -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 &

Переведем задание  job  с номером 2 в приоритетный режим: %2
ИЛИ 

fg 2

Пример:


grep -R "hostNamed" / 2> /dev/null > /tmp/grep.txt

Также есть возможность совершить обратное действие при помощи сочетания двух клавиш – удерживая CTRL нажать клавишу Z. Ход выполнения приоритетного задания будет приостановлен. Используя оператор «%2 &» переведем задание в фоновый режим: %2 &

ИЛИ

bg

Командное задание grep теперь работает в фоновом режиме.

Описание команд:

Описание Команда
Идентификация выполняемых заданий. jobs
jobs -l
ps aux
Перевод команды или скрипта в приоритетный режим. command &
/path/to/command &
/path/to/script arg1 &
Перевод фонового задания в приоритетный режим. fg n
%n
Перевод задания в фоновый режим без его отмены bg n
%n &
Последнее обновление: 07.12.2018