Что такое определение "сеанса" в linux?

когда я запускаю команду "w", я вижу, что два пользователя вошли в систему (оба-я). Быстрый поиск здесь говорит о том, что это нормально, потому что "один пользователь может иметь несколько активных сессий одновременно."

Что такое сессия? Почему у меня их два, если я вошел в систему только один раз?

28
задан Community
14.12.2022 3:52 Количество просмотров материала 3214
Распечатать страницу

4 ответа

Session обычно относится к сеансам оболочки. A shell это то, что позволяет взаимодействовать с компьютером. Он действует как мост между Пользователем и ядро. Всякий раз, когда вы запускаете команду, это оболочка, которая захватывает ваше намерение и говорит ядру делать свое дело.

в большинстве Linux вкусов, оболочка по умолчанию bash и новая bash сессия будет запускаться каждый раз при открытии нового терминала. В выводе w вы выложили, вы похоже, ваш графический сеанса (похоже ты sshing о машине):

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

каждый из них отдельный экземпляр оболочки и каждый считает своим собственные сессии.

5
отвечен terdon 2022-12-15 11:40

Я думаю, что каждый сеанс терминала является сеансом пользователя. Вы можете иметь более одного терминала под X, и это виртуальные терминалы, или u может иметь реальный терминал под консолью. Это все сеансы. Это мой 'w'

$ 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
отвечен Luigi 2022-12-15 13:57

сеанс-это каждая терминальная оболочка, запущенная процессами пользователя. Например, у меня сейчас запущено 3 сеанса. Окружение рабочего стола партнера и два окна терминала.

1
отвечен Vid Plavsic 2022-12-15 16:14

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

-> выполнение неинтерактивной задачи в фоновом режиме.

-> переключение между интерактивным задач через работу.

-> запуск нескольких процессов, которые работают вместе через трубы.

- > идущая система windowing как система окна X которые позволяют множественным терминальным окнам к открытый.

2. Для того, чтобы обработать все эти процессы, ядро должно сформировать группы процессов, состоящие из этих процессов.

3. Чтобы управлять этими группами процессов далее в соответствии с пользователем, эти группы делятся в соответствии с пользователем на сеансы.(Примечание здесь пользователь не является пользователем linux, но оболочка или терминал означает пользователя. Два терминала на одной машине, вошедшие в систему одним и тем же пользователем linux, означают 2 разных пользователя и, следовательно, 2 разных сеанса пользователя здесь. Стержень может контролировать терминал только для одного сеанса).

процесс, выполняющий оболочку для этого "пользователя" или сеанса называется лидером сеанса.

4. Также обратите внимание на закрытие терминала, нажав кнопку " x " не делают вас из этого терминала. Что терминал продолжает работать в фоновом режиме. Если вы хотите, чтобы по сессии из терминала, вы должны выйти оттуда, нажав CTRL + D или exit.

5. При выходе из терминала ядро посылает сигнал SIGHUP (аналогично kill -1) для обработки это сессионный лидер. Теперь любой другой процесс, запущенный в терминале, является дочерним для данного лидера сессии. Эти дочерние процессы сформировали группы процессов, которые управляются этим процессом лидера сеанса (родительским процессом).

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



Для больше, см. ссылку модель процесса разработки Linux

1
отвечен YATIN GUPTA 2022-12-15 18:31

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх