Все процессы объединены в сессии. Процессы, принадлежащие к одной сессии, определяются общим идентификатором сессии (sid). Лидер сессии - это процесс, который создал сессию вызовом setsid(2). Идентификатор процесса лидера сессии совпадает с его sid. Сессия может выделить себе управляющий терминал для того, чтобы дать пользователю возможность управлять исполнением заданий (групп процессов) внутри сессии. При входе в систему создается сессия, которая имеет идентификатор сессии, равный идентификатору процесса вашего входного shell'а. Также, при открытии каждого окна xterm(1) или закладки gnome-terminal(1), создается сессия, идентификатор которой совпадает с идентификатором дочернего процесса, запущенного терминальным эмулятором.
Если ваш командный процессор не предоставляет управления заданиями, все процессы в вашей сессии являются также членами единственной в этой сессии группы процессов, которая была создана вызовом setsid(2). В этом случае, функциональность сессии совпадает с функциональностью группы процессов.
В командном процессоре, предоставляющем управление заданиями (ksh(1), jsh(1), bash(1)), управляющий терминал совместно используется несколькими группами процессов, так как для каждой команды, запущенной с управляющего терминала, создается своя группа процессов. Командный процессор называет такие команды «заданиями» (jobs). Одновременно работающие задания идентифицируются номерами, обычно совпадающими с порядком их запуска.
Каждая группа процессов имеет лидера - процесс, идентификатор которого совпадает с идентификатором группы процессов. Управляющий терминал выделяет одну из групп процессов в сессии, как группу основных процессов (процессов первого плана). Все остальные процессы в сессии принадлежат к группам фоновых процессов. Группа процессов первого плана получает сигналы, посланные с терминала. По умолчанию, группа процессов, связанная с процессом, который выделил себе управляющий терминал, изначально становится группой основных процессов.
Кроме того, если процесс из фоновой группы пытается читать с терминала или выводить на него данные, он получает сигнал, соответственно, SIGTTIN или SIGTTOUT. Оба эти сигнала приводят к остановке соответствующего процесса. Shell при этом выводит сообщение [имя программы] stopped: tty input. Для продолжения исполнения такой программы необходимо перевести соответствующую группу процессов на первый план командой fg.
Обычные команды запускаются как задания первого плана. Shell ожидает завершения лидера группы этого задания и выдает приглашение только после его завершения. Если в конце команды стоит символ &, shell запускает такую команду как фоновое задание и не дожидается ее завершения. Если пользователь во время работы команды первого плана введет символ VSUSP (Ctrl-Z), группа получает сигнал SIGTSTP и останавливается, а shell выдает приглашение. Пользователь может вернуться к взаимодействию с этой группой процессов, введя команду fg, или продолжить её исполнение в фоне командой bg. Если пользователь имеет несколько приостановленных или фоновых заданий, он может выбирать между ними, идентифицируя их по номерам. Так, переключение на задание 3 делается командой fg %3.
Вывести список заданий, их номера и состояния можно командой jobs.
Также, встроенная команда kill у shell'ов с управлением заданиями, может принимать номер задания вместо номера процесса; при этом сигнал будет послан всем процессам соответствующей группы.