34. Группы процессов, сессии и управление заданиями
Группы процессов и сессии составляют двухуровневые иерархические отношения между процессами: первые являются наборами связанных между собой процессов, а вторые — групп. По мере чтения данной главы вы получите более четкое представление о том, что именно означают эти связи в каждом из случаев.
Группы процессов и сессии — это абстракции, созданные для поддержки управления заданиями в командной оболочке; это позволяет выполнять команды как в интерактивном, так и в фоновом режиме. Понятие
Группы процессов, сессии и управление заданиями будут рассмотрены в этой главе.
Группа процессов имеет
Все процессы в сессии разделяют один и тот же
В любой момент времени одна из групп процессов в сессии является
В результате установления соединения с контролирующим терминалом (то есть открытия) лидер сессии становится контролирующим процессом этого терминала. Главной особенностью такого процесса является то, что при утрате соединения с терминалом ядро отправляет ему сигнал SIGHUP.
В Linux идентификаторы PGID и SID любого процесса можно определить с помощью файлов вида /proc/PID/stat. Мы также можем определить идентификатор устройства контролирующего терминала (имеющий вид десятичного числа, состоящего из основного и дополнительного идентификаторов) и идентификатор его процесса. Больше подробностей ищите на справочной странице proc(5).
Основное назначение групп процессов и сессий связано с управлением заданиями в командной оболочке. Чтобы прояснить понимание данных концепций, рассмотрим пример из этой области. Когда пользователь входит в систему в интерактивном режиме, он задействует контролирующий терминал. Командная оболочка, задействованная при этом, становится лидером сессии, контролирующим процессом для терминала, а также единственным участником своей собственной группы процессов. Любые команды или конвейеры команд, запущенных из этой оболочки, становятся новыми процессами и помещаются в новую группу (изначально они являются единственными ее участниками, однако в нее также попадают потомки этих процессов). Команды или конвейеры, после которых указывается амперсанд (&), попадают в фоновую группу процессов. В противном случае их группа будет активной. Все процессы, созданные во время терминальной сессии, являются ее частью.
В оконной среде контролирующим является псевдотерминал, и каждое его окно имеет отдельную сессию, лидером и контролирующим процессом которой становится его командная оболочка.
Группы процессов иногда можно применять не только для управления заданиями. Они имеют два полезных свойства: родительский процесс может ожидать любого из своих потомков в определенной группе (см. подраздел 26.1.2), и сигнал может быть отправлен сразу всем участникам группы (см. раздел 20.5).
На рис. 34.1 показана группа процессов и отношения между различными процессами в рамках одной сессии, которые являются результатом выполнения следующих команд: