Фоновый режим выполнения заданий
Обычно пользователи вводят задания интерактивно с помощью команд обо- лочки, наблюдая на экране за ходом и результатами их выполнения.
В GNU/Linux можно запускать команды в фоновом режиме. Это позволяет пользователю выполнять несколько программ одновременно.
Только одно задание на терминале может работать в интерактивном режиме (foreground). Если на терминале имеются другие активные задания, то они выполняются в фоновом режиме (background).
Для запуска команды в фоновом режиме в конце командной строки необхо- димо поставить символ & (амперсанд). При запуске фонового задания выво- дится его номер (пример 5.2).
Пример 5.2. Запуск задания в фоновом режиме |
#updatedb & [1]546
В примере 5.2 команда updatedb запущена в фоновом режиме, т. к. в конце командной строки установлен символ &. Номер задания выводится в квадрат- ных скобках, в этом примере — 1. Число, выводящееся после квадратных скобок, — PID процесса.
Для мониторинга состояний фоновых заданий предназначена команда jobs, которая позволяет просмотреть статус фоновых заданий. Она отображает но- мер задания, имя команды и статус задания (пример 5.3).
Пример 5.3. Команда jobs |
#find ~basile –name "*core*" –user basile –exec rm –f {} \; & [1]548
#find ~anna –name "*core*" –user anna –exec rm –f {} \; & [2]551
#jobs
[1]-Done find ~basile –name "*core*" –user basile –exec rm –f {} \; [2]+Running find ~anna –name "*core*" –user anna –exec rm –f {} \;
В этом примере были запущены два задания на поиск и удаление файлов с подстрокой core в именах файлов, принадлежащих пользователям basile и anna. Заданиям назначены номера 1 и 2. Команда jobs показала, что зада- ние 1 выполнено, а задание 2 выполняется.
Обозначения %% и %+ указывают последнее запущенное фоновое задание, а % — предпоследнее задание. Аналогично, информация о заданиях, выводи- мых командой jobs, отображает символы + и – для индикации последнего и предпоследнего заданий.
Команда fg %номерзадания переводит задание с номером номерзадания в ин- терактивный режим. Так, команда fg %1 переводит задание с номером 1 в интерактивный режим.
Наоборот, для перевода задания в фоновый режим из интерактивного необ- ходимо приостановить его выполнение нажатием комбинации клавиш
<Ctrl>+<Z>, а затем выполнить команду bg с аргументом %номерзадания.
Можно указывать задания по первым символам их командной строки, пред- варяя их % (пример 5.4).
Пример 5.4. Обращение к фоновым заданиям по именам команд |
#jobs
[2]+Running find ~anna –name "*core*" –user anna –exec rm –f {} \;
#fg %fi
В примере 5.4 выполняющееся в фоновом режиме задание было переведено в интерактивный режим командой fg %fi, которая использовала идентифи- кацию задания не по его номеру, а по двум первым буквам в имени команды.
Завершить фоновое задание можно командой kill %номерзадания (при-
мер 5.5).
Пример 5.5. Снятие фонового задания с выполнения |
#jobs
[2]+Running find ~anna –name "*core*" –user anna –exec rm –f {} \;
#kill %2
#jobs
[2]+Terminated find ~anna –name "*core*" –user anna –exec rm –f {} \;
В примере 5.5 задание с номером 2 было завершено командой kill.
Дата добавления: 2015-06-12; просмотров: 993;