คำจำกัดความของ "เซสชัน" ใน linux คืออะไร?


11

เมื่อฉันรันคำสั่ง "w" ฉันเห็นผู้ใช้สองคนลงชื่อเข้าใช้ (ทั้งคู่คือฉัน) การค้นหาอย่างรวดเร็วที่นี่บอกว่านี่เป็นเรื่องปกติเพราะ"ผู้ใช้คนเดียวสามารถมีหลายเซสชันที่ใช้งานได้ในคราวเดียว"

เซสชันคืออะไร ทำไมฉันถึงมีสองคนเมื่อฉันลงชื่อเข้าใช้ระบบของฉันครั้งเดียว

คำตอบ:


8

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 และที่เป็นเทอร์มินัลเสมือนหรือคุณสามารถมีเทอร์มินัลจริงภายใต้คอนโซล นั่นคือการประชุมทั้งหมด นี่คือ '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

1. แม้ว่าผู้ใช้จะเข้าสู่กระบวนการเดียว (เชลล์ซึ่งเป็นส่วนต่อประสานบรรทัดคำสั่ง) แต่ผู้ใช้ก็จบลงด้วยการทำงานหลายขั้นตอนเนื่องจากการกระทำเช่น:

-> การเรียกใช้ภารกิจที่ไม่โต้ตอบในพื้นหลัง
-> การสลับระหว่างงานแบบโต้ตอบผ่านการควบคุมงาน
-> การเริ่มต้นกระบวนการหลายอย่างที่ทำงานร่วมกันผ่านท่อ
-> การเรียกใช้ระบบหน้าต่างเช่นระบบ X window ซึ่งอนุญาตให้เปิดหน้าต่างเทอร์มินัลหลายหน้าต่าง

2. เพื่อจัดการกระบวนการเหล่านี้ทั้งหมดเคอร์เนลต้องจัดกลุ่มกระบวนการประกอบด้วยกระบวนการเหล่านี้

3. ในการจัดการกลุ่มกระบวนการเหล่านี้เพิ่มเติมตามผู้ใช้กลุ่มเหล่านี้จะแบ่งตามผู้ใช้ออกเป็นเซสชัน (หมายเหตุผู้ใช้ที่นี่ไม่ใช่ผู้ใช้ linux แต่เชลล์หรือเทอร์มินัลย่อมาจากผู้ใช้สองขั้วบนเครื่องเดียวกัน ย่อมาจาก 2 ผู้ใช้ที่แตกต่างกันและ 2 เซสชันผู้ใช้ที่แตกต่างกันที่นี่เทอร์มินัลสามารถควบคุมสถานีสำหรับเซสชั่นเดียวเท่านั้น
กระบวนการที่ใช้เชลล์สำหรับ“ ผู้ใช้” หรือเซสชันนั้นรู้จักกันในนามของผู้นำเซสชัน

4. หมายเหตุการปิดเทอร์มินัลด้วยการกดปุ่ม 'x' ไม่ทำให้คุณออกจากเทอร์มินัลนั้น เทอร์มินัลนั้นยังคงทำงานในพื้นหลัง หากคุณต้องการข้ามเซสชันจากเทอร์มินัลคุณต้องออกจากระบบโดยกด CTRL + D หรือออก

5. เมื่อคุณออกจากระบบเทอร์มินัลเคอร์เนลจะส่งสัญญาณ SIGHUP (คล้ายกับ kill -1) เพื่อประมวลผลที่เป็นผู้นำเซสชัน ตอนนี้ทุกกระบวนการอื่น ๆ ที่ทำงานใน terminal เป็นลูกของผู้นำเซสชั่นนี้ กระบวนการย่อยเหล่านี้สร้างกลุ่มกระบวนการที่ควบคุมโดยกระบวนการผู้นำเซสชันนี้ (กระบวนการหลัก)

6. กระบวนการผู้นำเซสชันส่ง SIGHUP ไปยังกระบวนการลูกแต่ละกระบวนการบางกระบวนการจะยกเลิกในขณะที่บางคนสามารถเลือกที่จะไม่ยุติ (ผู้ที่ถูกระงับหรือทำงานในพื้นหลัง) ผู้ที่เลือกที่จะไม่ยุติกลายเป็นเด็กกำพร้าเป็นเซสชัน overs และนำไปใช้ทันทีโดยกระบวนการ init (หลักของกระบวนการทั้งหมดในเครื่อง Linux)


สำหรับลิงค์อ้างอิงเพิ่มเติมรูปแบบกระบวนการของการพัฒนา Linux


1

เซสชันคือแต่ละเทอร์มินัลเชลล์ที่รันโดยกระบวนการของผู้ใช้ ตัวอย่างเช่นฉันมี 3 เซสชันทำงานอยู่ในขณะนี้ สภาพแวดล้อมเดสก์ท็อป Mate ของฉันและ windows terminal สองตัวของฉัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.