Для установки нажмите кнопочку Установить расширение. И это всё.

Исходный код расширения WIKI 2 регулярно проверяется специалистами Mozilla Foundation, Google и Apple. Вы также можете это сделать в любой момент.

4,5
Келли Слэйтон
Мои поздравления с отличным проектом... что за великолепная идея!
Александр Григорьевский
Я использую WIKI 2 каждый день
и почти забыл как выглядит оригинальная Википедия.
Статистика
На русском, статей
Улучшено за 24 ч.
Добавлено за 24 ч.
Альтернативы
Недавние
Show all languages
Что мы делаем. Каждая страница проходит через несколько сотен совершенствующих техник. Совершенно та же Википедия. Только лучше.
.
Лео
Ньютон
Яркие
Мягкие

Управление заданиями

Из Википедии — свободной энциклопедии

Управление заданиями в UNIX-подобных операционных системах — комплекс средств по манипуляции пакетными заданиями оболочки UNIX, в частности, в интерактивном режиме, где «задание» — представление оболочки для группы процесса.

В наиболее простом случае управление заданиями будет состоять из приостановки, возобновления или завершения выполнения задания (то есть всех процессов в группе процесса), но может также включать отправку заданию другого сигнала. В отличие от понятия блока управления заданием (англ. job control block) (применяющегося для последовательных выполнений в пакетном режиме), управление заданиями подразумевает пользовательский инструментальный набор для работы с пакетным режимом из интерактивных средств.

Обзор

Большинство пользовательских задач[1] при работе через терминал (или эмулятор терминала) — просмотр каталогов, редактирование файлов и так далее — обеспечивается передачей управления программам с возвращением контроля оболочке при выходе из программы через стандартный вход и стандартный выход к оболочке, читающей с терминала или пишущей в него и принимая сигналы, посланные с клавиатуры, такие, как Control+C.

Однако иногда пользователю может потребоваться выполнить задачу, используя терминал для другой цели — задача, которая запущена, но не принимает ввод с терминала, называемая фоновым заданием, в то время как единственную задачу, которая принимает ввод с терминала, называют заданием переднего плана. Управление заданиями — средство, разработанное, чтобы сделать это возможным, позволяющее пользователю запускать процессы в фоне, отправлять процессы переднего плана в фон, переводить фоновый процесс на передний план, и процессы запуска и остановки (англ. suspend, resume, terminate).

Понятие «задание» отображает концепцию единственной команды оболочки на концепцию операционной системы, когда одной командой можно запустить много процессов. Конкретно, единственная задача может состоять из множества процессов: данный процесс может создавать дополнительные дочерние процессы, которые могут в свою очередь создавать их собственные дочерние процессы и так далее, и единственная команда оболочки может состоять из конвейера множества связанных процессов. Ими управляет операционная система как одной единственной группой процесса[en] (все процессы группы разделяют один и тот же идентификатор — PGID), и внутреннее представление группы процесса оболочки — задание. Это определено в POSIX как:[2]

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

Группа процессов может таким образом управляться как единое целое оболочки, единое задание. Задание в свою очередь может быть ссылаться на дескриптор[en][3], ID процесса управления заданием используется встроенной командой оболочки для ссылки на задание. ID задания начинаются с символов %% ; %n определяет задание с именем n, тогда как %% определяет текущее. Другие ID заданий определены в POSIX[4]. Документация Bash ссылается на (%-prefixed) как jobspec[5].

Управление заданиями и ID задания применяются обычно только в интерактивном использовании, где они упрощают обращение к группам процессов; в скриптах вместо них часто используются PGID, поскольку они точнее и устойчивее, а реально управление процессами отключено по умолчанию в скриптах Bash.

Пример

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

Задание на схеме эквивалентно группе процессов. PPID — идентификатор родительского процесса. SID — идентификатор сессии. TTY — управляющий терминал.

История

Управление заданиями впервые было применено в оболочке Csh Джимом Калпом[6] затем в МИПСА в Австрии, используя особенности ядра 4.1 BSD, и принято в оболочке Korn (ksh), разработанной Bell Labs. Позже было включено в версию SVR4 оболочки Bourne (sh), и так существует с тех пор в большинстве современных оболочек Unix.

Применение

Список заданий оболочка держит обычно в таблице процессов. Команда jobs перечисляет фоновые задания, существующие в таблице процессов, наряду с номером и состоянием (остановлен или запущен) каждого процесса. Команда disown может использоваться для удаления заданий из таблицы процессов, преобразовывая их из заданий в демоны так, чтобы они продолжились выполнять даже когда пользователь выйдет из системы (logout).

Задание, выполняющееся «на переднем плане», может быть остановлено вводом символов (Ctrl+Z). Это пошлёт сигнал SIGTSTP группе процесса. По умолчанию SIGTSTP скомандует соответствующим процессам остановиться и передать управление ими оболочке. Однако процесс может притом либо зарегистрировать маркер сигнала или же проигнорировать SIGTSTP. Процесс может также быть поставлен на паузу сигналом SIGSTOP, который не может быть захвачен или проигнорирован.

Остановленное задание может быть возобновлено как фоновое задание командой bg оболочки, или перемещено на передний план командой fg. В любом случае, оболочка соответственно перенаправляет ввод-вывод и посылает процессу сигнал SIGCONT, который заставляет операционную систему возобновить её выполнение. В оболочке Bash программа может быть запущена как фоновое задание добавлением амперсанда (&) в командную строку; её выход притом направляется на терминал (потенциально чередуясь с выходами других программ), однако в этом случае она не сможет читать с терминального входа.

Фоновый процесс, который пытается прочитать или записать в его управляющий терминал, отправит сигнал SIGTTIN (для ввода) или SIGTTOU (для вывода). Эти сигналы по умолчанию останавливают процесс, но они могут также быть обработаны и другими способами. Оболочки часто отвергают заданное по умолчанию действие остановки SIGTTOU так, что фоновые процессы предоставят свой вывод по умолчанию управляющему терминалу. В Bash-совместимых оболочках, встроенная команда kill может сигнализировать заданиям по ID процесса, а также ID группы процесса — посылая сигнал на выполнение задания всей группе его процесса, и задания, заданные при помощи ID, должны «убиваться» посылкой префикса «%». Kill может послать заданию любой сигнал, однако если намерение состоит в том, чтобы избавить систему от процессов, наиболее применимыми будут скорее всего сигналы SIGKILL и SIGTERM (по умолчанию). Задание, выполняющееся на переднем плане, может быть навсегда остановлено вводом символов команды «убить процесс» (Ctrl+C).

Примечания

  1. Здесь «задача» является нетехническим термином для некоторой активности, тогда как «процесс» и «задание» — конкретные понятия из области операционных систем
  2. IEEE Std 1003.1-2001, Section 3.201, Job Архивная копия от 9 октября 2010 на Wayback Machine
  3. ID является абстрактной ссылкой оболочки на ресурс (группа процесса), управляемый внешне с помощью операционной системы, следовательно это — дескриптор
  4. IEEE Std 1003.1-2001, Section 3.203, Job Control Job ID Архивная копия от 9 октября 2010 на Wayback Machine
  5. 7.1 Job Control Basics. Дата обращения: 14 ноября 2015. Архивировано 29 октября 2015 года.
  6. Foreword by Bill Joy in Anderson, Gail; Paul Anderson. The UNIX C Shell Field Guide (неопр.). — Prentice-Hall, 1986. — С. xvii. — ISBN 0-13-937468-X.

Литература

Ссылки

Эта страница в последний раз была отредактирована 19 августа 2022 в 18:40.
Как только страница обновилась в Википедии она обновляется в Вики 2.
Обычно почти сразу, изредка в течении часа.
Основа этой страницы находится в Википедии. Текст доступен по лицензии CC BY-SA 3.0 Unported License. Нетекстовые медиаданные доступны под собственными лицензиями. Wikipedia® — зарегистрированный товарный знак организации Wikimedia Foundation, Inc. WIKI 2 является независимой компанией и не аффилирована с Фондом Викимедиа (Wikimedia Foundation).