Що таке визначення сеансу в Linux?


12

Коли я запускаю команду "w", я бачу, як увійшли два користувачі (обидва я). Швидкий пошук тут говорить про те, що це нормально, оскільки "Один користувач може мати декілька активних сесій у будь-який час".

Що таке сеанс? Чому я маю два з них, коли я лише один раз увійшов у свою систему?

Відповіді:


9

Sessionзазвичай стосується сеансів оболонки. Оболонка є те , що дозволяє взаємодіяти з комп'ютером. Він діє як міст між користувачем та ядром . Кожного разу, коли ви запускаєте команду, саме оболонка фіксує ваш намір і каже ядру робити свою справу.

У більшості ароматів Linux оболонка за замовчуванням є, bashі новий bashсеанс буде запускатися щоразу, коли ви відкриваєте новий термінал. У висновку, який wви опублікували, у вас, здається, є ваш графічний сеанс входу (виглядає так, ніби ви працюєте на машині):

argento  :0        18set13 ?xdm?   2days  1.58s gdm-session-worker [pam/gdm-password]

Кілька відкритих емуляторів терміналу:

argento  pts/0     18set13 29:26m  5:26   5:26  rdesktop -g 1200x700 -u administrator -p XXXXXXXXX -d DOMAIN -K srv-wsus
argento  pts/1     18set13  9days  0.16s  0.16s /bin/bash
argento  pts/2     lun10    5.00s  0.09s  7.55s /usr/bin/python /usr/bin/terminator
argento  pts/3     14:40   33:41   0.09s  0.03s vim notes.txt
argento  pts/4     gio12   26:04m  0.10s  7.55s /usr/bin/python /usr/bin/terminator
argento  pts/5     14:56   17:33   0.11s  0.11s /bin/bash

І ви також, здається, увійшли в систему з неграфічного tty:

argento  tty2      15:11    1:01   0.09s  0.09s -bash

Кожен з них є окремим екземпляром вашої оболонки і кожен вважається своїм власним сеансом.


2

Я думаю, що кожен термінальний сеанс - це сеанс користувача. У вас може бути більше одного терміналу під X, і це віртуальні термінали, або u може мати реальний термінал під консоллю. Це всі сесії. Це моє "ш"

$ w
 15:14:13 up 9 days,  6:02,  8 users,  load average: 1,03, 1,19, 1,31
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
argento  :0        18set13 ?xdm?   2days  1.58s gdm-session-worker [pam/gdm-password]
argento  pts/0     18set13 29:26m  5:26   5:26  rdesktop -g 1200x700 -u administrator -p XXXXXXXXX -d DOMAIN -K srv-wsus
argento  pts/1     18set13  9days  0.16s  0.16s /bin/bash
argento  pts/2     lun10    5.00s  0.09s  7.55s /usr/bin/python /usr/bin/terminator
argento  pts/3     14:40   33:41   0.09s  0.03s vim notes.txt
argento  pts/4     gio12   26:04m  0.10s  7.55s /usr/bin/python /usr/bin/terminator
argento  pts/5     14:56   17:33   0.11s  0.11s /bin/bash
argento  tty2      15:11    1:01   0.09s  0.09s -bash

У другому стовпці показано tty, як ви можете бачити, що у pts є xterm (віртуальний термінал), інший (tty2) - консольний логін.


2

1. Хоча користувач входить в єдиний процес (оболонка, яка є їх інтерфейсом командного рядка), користувачі закінчують багато процесів у результаті дії, наприклад:

-> Запуск неінтерактивного завдання у фоновому режимі.
-> Переключення між інтерактивними завданнями через контроль роботи.
-> Запуск декількох процесів, які працюють разом через труби.
-> Запуск системи вікон, таких як віконна система X, яка дозволяє відкрити кілька вікон терміналів.

2. Для управління всіма цими процесами ядру необхідно сформувати групи процесів, що складаються з цих процесів.

3. Для подальшого керування цими групами процесів відповідно до користувача ці групи поділяються залежно від користувача на сеанси. (Зауважте, що тут користувач не користувач Linux, а оболонка або термінал для користувача. Два термінали на цій же машині ввійшли тим самим користувачем Linux означає два різних користувача, і, отже, 2 різні користувацькі сесії тут. Термінал може бути керуючим терміналом лише для одного сеансу).
Процес, який запускає оболонку для цього "користувача" або сеансу, відомий як лідер сесії.

4. Також зверніть увагу на закриття терміналу натисканням кнопки «x», щоб не виходити з нього. Цей термінал продовжує працювати у фоновому режимі. Якщо ви хочете закінчити сеанс з терміналу, вам потрібно вийти звідти, натиснувши CTRL + D або вийти.

5. Під час виходу з терміналу ядро ​​посилає сигнал SIGHUP (подібний до убиття -1) на процес, який є лідером сесії. Тепер кожен інший процес, який запускається в терміналі, є дочірнім лідером цієї сесії. Ці дочірні процеси сформували групи процесів, які контролюються процесом цього керівника сеансу (батьківський процес).

6. Процес керівника сеансу надсилає SIGHUP до кожного дочірнього процесу, деякі закінчуються, тоді як деякі можуть вирішити не припиняти (ті, які призупинені або працюють у фоновому режимі). Ті, хто вирішує не припиняти, стають осиротілими після закінчення сеансу і негайно приймаються за допомогою процесу init (батька всіх процесів у машині Linux).


Докладніше див. Посилання Модель процесів розробки Linux


1

Сеанс - це кожна оболонка терміналу, керована процесами користувача. Наприклад, зараз у мене три сесії. Моє оточення на робочому столі Mate та два вікна термінала.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.