1. Хоча користувач входить в єдиний процес (оболонка, яка є їх інтерфейсом командного рядка), користувачі закінчують багато процесів у результаті дії, наприклад:
-> Запуск неінтерактивного завдання у фоновому режимі.
-> Переключення між інтерактивними завданнями через контроль роботи.
-> Запуск декількох процесів, які працюють разом через труби.
-> Запуск системи вікон, таких як віконна система X, яка дозволяє відкрити кілька вікон терміналів.
2. Для управління всіма цими процесами ядру необхідно сформувати групи процесів, що складаються з цих процесів.
3. Для подальшого керування цими групами процесів відповідно до користувача ці групи поділяються залежно від користувача на сеанси. (Зауважте, що тут користувач не користувач Linux, а оболонка або термінал для користувача. Два термінали на цій же машині ввійшли тим самим користувачем Linux означає два різних користувача, і, отже, 2 різні користувацькі сесії тут. Термінал може бути керуючим терміналом лише для одного сеансу).
Процес, який запускає оболонку для цього "користувача" або сеансу, відомий як лідер сесії.
4. Також зверніть увагу на закриття терміналу натисканням кнопки «x», щоб не виходити з нього. Цей термінал продовжує працювати у фоновому режимі. Якщо ви хочете закінчити сеанс з терміналу, вам потрібно вийти звідти, натиснувши CTRL + D або вийти.
5. Під час виходу з терміналу ядро посилає сигнал SIGHUP (подібний до убиття -1) на процес, який є лідером сесії. Тепер кожен інший процес, який запускається в терміналі, є дочірнім лідером цієї сесії. Ці дочірні процеси сформували групи процесів, які контролюються процесом цього керівника сеансу (батьківський процес).
6. Процес керівника сеансу надсилає SIGHUP до кожного дочірнього процесу, деякі закінчуються, тоді як деякі можуть вирішити не припиняти (ті, які призупинені або працюють у фоновому режимі). Ті, хто вирішує не припиняти, стають осиротілими після закінчення сеансу і негайно приймаються за допомогою процесу init (батька всіх процесів у машині Linux).
Докладніше див. Посилання Модель процесів розробки Linux