linux에서“세션”의 정의는 무엇입니까?


답변:


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'입니다

$ 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를 보여줍니다. u는 pt가 xterm (가상 터미널)이고 다른 하나 (tty2)가 콘솔 로그인임을 알 수 있습니다.


2

1. 사용자가 단일 프로세스 (명령 줄 인터페이스 인 셸)에 로그인하더라도 다음과 같은 작업의 결과로 많은 프로세스를 실행하게됩니다.

-> 백그라운드에서 비 대화식 작업 실행
-> 작업 제어를 통한 대화식 작업 간 전환.
-> 파이프를 통해 함께 작동하는 여러 프로세스 시작.
-> 여러 터미널 창을 열 수있는 X 윈도우 시스템과 같은 윈도우 시스템을 실행합니다.

2. 이러한 모든 프로세스를 처리하기 위해 커널은 이러한 프로세스로 구성된 프로세스 그룹을 구성해야합니다.

3. 사용자에 따라이 프로세스 그룹을 추가로 관리하기 위해이 그룹은 사용자에 따라 세션으로 나뉩니다 (여기서 사용자는 Linux 사용자는 아니지만 쉘 또는 터미널은 사용자를 나타냄). 동일한 기계에 동일한 Linux 사용자가 로그인 한 두 개의 터미널 여기서는 2 개의 다른 사용자를 나타내며 여기서 2 개의 다른 사용자 세션을 나타냅니다 (단말기 만 터미널을 제어 할 수 있습니다).
해당 "사용자"또는 세션에 대해 셸을 실행하는 프로세스를 세션 리더라고합니다.

4. 또한 'x'버튼을 눌러 터미널을 닫지 마십시오. 그 터미널은 백그라운드에서 계속 실행됩니다. 터미널에서 세션을 초과하려면 CTRL + D를 눌러 종료하거나 종료해야합니다.

5. 터미널에서 로그 아웃 할 때 커널은 SIGHUP 신호 (kill -1과 유사)를 세션 리더 인 프로세스로 보냅니다. 이제 터미널에서 실행되는 다른 모든 프로세스는이 세션 리더의 자식입니다. 이러한 하위 프로세스는이 세션 리더 프로세스 (부모 프로세스)에 의해 제어되는 프로세스 그룹을 형성했습니다.

6. 세션 리더 프로세스는 각 하위 프로세스에 SIGHUP을 보내고 일부 프로세스는 종료되며 일부는 종료하지 않도록 선택할 수 있습니다 (일시 중단 또는 백그라운드에서 실행). 이들은 세션이 끝날 때 고아가되지 않도록 선택하고 init 프로세스 (Linux 시스템의 모든 프로세스의 부모)에 의해 즉시 채택됩니다.


자세한 내용은 링크 Linux 개발 프로세스 모델


1

세션은 사용자 프로세스에 의해 실행되는 각 터미널 쉘입니다. 예를 들어, 지금 3 개의 세션이 실행 중입니다. 내 Mate 데스크탑 환경과 두 개의 터미널 창.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.