Система управления заданиями
Система управления заданиями
Командный интерпретатор может поддерживать управление заданиями. Для Bourne shell (/bin/sh), который мы рассматриваем, систему управления заданиями включает парный ему интерпретатор /bin/jsh. В остальном этот интерпретатор имеет те же возможности.
В системе управления заданиями каждая команда (простая или составная), которую пользователь запускает со своего терминала, называется заданием. Все задания могут выполняться либо в текущем режиме, либо в фоновом режиме, либо быть приостановлены. Задание в каждом из этих состояний обладает рядом характеристик:
Состояние задания Характеристики Выполняется в текущем режиме Задание может считывать данные и выводить данные на терминал пользователя Выполняется в фоновом режиме Заданию запрещен ввод с терминала. Возможность вывода на терминал определяется дополнительными установками Приостановлено Задание не выполняетсяКаждое задание при запуске получает уникальный идентификатор, называемый номером задания, который используется в командах системы управления. Синтаксис номера задания, применяемый в командах:
%jobid
где jobid может принимать следующие значения:
% или + Текущее задание — самое последнее запущенное или вновь запущенное задание - Предыдущее задание (по отношению к текущему) ?строка Задание, для которого строка присутствует в командной строке запуска n Задание с номером n pref Задание, на которое можно уникально указать префиксом pref, например, команда ls(1), запущенная в фоновом режиме, адресуется заданием %lsСистема управления заданиями позволяет использовать следующие дополнительные команды:
bg [%jobid] Продолжает выполнение остановленного задания в фоновом режиме. Без параметра относится к текущему заданию. fg [%jobid] Продолжает выполнение остановленного задания в текущем режиме. Если задание jobid выполнялось в фоновом режиме, команда перемещает его в текущий режим. jobs [-p | -l] [%jobid ... ] Выводит информацию об остановленных и фоновых заданиях с указанными номерами. Если последний аргумент опущен, выводится информация обо всех остановленных и фоновых заданиях. Приведенные ниже опции изменяют формат вывода: -l Вывести идентификатор группы процессов и рабочий каталог. -р Вывести только идентификатор группы процессов. kill [-signo] %jobid Обеспечивает те же возможности, что и команда kill(1), но по отношению к заданиям. stop %jobid Останавливает выполнения фонового задания. wait %jobid Ожидает завершения выполнения задания jobid и возвращает его код возврата.Приведенный ниже пример иллюстрирует использование команд управления заданиями и не нуждается в комментариях:
$ inf.j &
[1] 9112
$ comm1 &
[2] 9113
$ jobs
[1] - Running inf.j
[2] + Running comm1
$ stop %1
$ jobs
[1] - Stopped (signal) inf.j
[2] + Running comm1
$ stop %%
$ jobs -1
[1] - 9112 Stopped (signal) inf.j (wd: /home/andy/SH//JOB)
[2] + 9113 Stopped (signal) comm1 (wd: /home/andy/SH/JOB)
$ bg %1
[1] inf.j &
$ jobs
[1] + Running inf.j
[2] - Stopped (signal) comm1
$ kill %1 %2
$ jobs
[1] + Done(208) inf.j
[2] - Done (208) comm1
$
Данный текст является ознакомительным фрагментом.