1. Хотя пользователь входит в единый процесс (оболочка, являющаяся его интерфейсом командной строки), пользователи заканчивают тем, что запускают много процессов в результате действий, подобных
-> Запуск неинтерактивного задания в фоновом режиме.
-> Переключение между интерактивными задачами через управление заданиями.
-> Запуск нескольких процессов, которые работают вместе через каналы.
-> Запуск оконной системы, такой как X Window System, которая позволяет открывать несколько окон терминала.
2. Для обработки всех этих процессов ядру необходимо сформировать группы процессов, состоящие из этих процессов.
3. Для дальнейшего управления этими группами процессов в соответствии с пользователем, эти группы делятся в соответствии с пользователем на сеансы. (Обратите внимание, что здесь пользователь не является пользователем Linux, но оболочка или терминал означает пользователя. Два терминала на одном компьютере зарегистрированы одним и тем же пользователем Linux. обозначает 2 разных пользователя и, следовательно, 2 разных сеанса пользователя. Терминал может управлять терминалом только для одного сеанса).
Процесс, который запускает оболочку для этого «пользователя» или сеанса, называется лидером сеанса.
4. Также обратите внимание на закрытие терминала нажатием кнопки «х», чтобы вы не вышли из этого терминала. Этот терминал продолжает работать в фоновом режиме. Если вы хотите перенести сеанс с терминала, вам нужно выйти из системы, нажав CTRL + D или выйти.
5. Когда вы выходите из терминала, ядро отправляет сигнал SIGHUP (аналогично kill -1) процессу, который является лидером сеанса. Теперь все остальные процессы, выполняющиеся в терминале, являются дочерними для этого лидера сеанса. Эти дочерние процессы сформировали группы процессов, которые управляются этим процессом лидера сеанса (родительским процессом).
6. Процесс лидера сеанса отправляет SIGHUP каждому дочернему процессу, некоторые процессы завершаются, в то время как некоторые могут отказаться от завершения (приостановленные или запущенные в фоновом режиме). Те, кто предпочитает не прекращать, становятся осиротевшими как сеансовые оверны и сразу же принимаются процессом init (родителем всего процесса на машине linux).
Подробнее см . Ссылку Модель процесса разработки Linux