Định nghĩa của một phiên giao dịch trực tuyến trong linux là gì?


12

Khi tôi chạy lệnh "w", tôi thấy hai người dùng đã đăng nhập (cả hai đều là tôi). Một tìm kiếm nhanh ở đây cho biết rằng điều này là bình thường vì "Một người dùng có thể có nhiều phiên hoạt động cùng một lúc."

Một phiên là gì? Tại sao tôi có hai người trong số họ khi tôi chỉ đăng nhập vào hệ thống của mình một lần?

Câu trả lời:


9

Sessionthường đề cập đến phiên vỏ. Một vỏ là những gì cho phép bạn tương tác với máy tính. Nó hoạt động như một cầu nối giữa người dùng và kernel . Bất cứ khi nào bạn chạy một lệnh, nó là cái vỏ nắm bắt ý định của bạn và bảo hạt nhân thực hiện công việc của nó.

Trong hầu hết các hương vị Linux, shell mặc định là bashvà một bashphiên mới sẽ được khởi chạy mỗi khi bạn mở một thiết bị đầu cuối mới. Trong đầu ra của wbạn được đăng, dường như bạn có phiên đăng nhập đồ họa của bạn (có vẻ như bạn đang sử dụng máy):

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

Một vài trình giả lập thiết bị đầu cuối mở:

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

Và dường như bạn cũng đã đăng nhập từ một tty phi đồ họa:

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

Mỗi cái này là một thể hiện riêng biệt của shell của bạn và mỗi cái được tính là phiên riêng của nó.


2

Tôi nghĩ rằng mỗi phiên thiết bị đầu cuối là một phiên người dùng. Bạn có thể có nhiều thiết bị đầu cuối dưới X và đó là các thiết bị đầu cuối ảo hoặc bạn có thể có thiết bị đầu cuối thực trong bảng điều khiển. Đó là tất cả các phiên. Đây là 'w' của tôi

$ 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

Cột thứ hai hiển thị tty, vì bạn có thể thấy pts là xterm (thiết bị đầu cuối ảo) còn lại (tty2) là thông tin đăng nhập giao diện điều khiển.


2

1. Mặc dù người dùng đăng nhập vào một quy trình (shell là giao diện dòng lệnh của họ), người dùng cuối cùng vẫn chạy nhiều quy trình do kết quả của hành động như:

-> Chạy tác vụ không tương tác trong nền.
-> Chuyển đổi giữa các tác vụ tương tác thông qua kiểm soát công việc.
-> Bắt đầu nhiều quá trình làm việc cùng nhau thông qua các đường ống.
-> Chạy hệ thống cửa sổ như hệ thống cửa sổ X cho phép mở nhiều cửa sổ đầu cuối.

2. Để xử lý tất cả các quy trình này, kernel cần tạo thành các nhóm quy trình bao gồm các quy trình này.

3. Để thay đổi các nhóm quy trình này theo người dùng, các nhóm này được chia theo người dùng thành các phiên. (Lưu ý ở đây người dùng không phải là người dùng linux, nhưng shell hoặc terminal là viết tắt của người dùng. Hai thiết bị đầu cuối trên cùng một máy được đăng nhập bởi cùng một người dùng linux là viết tắt của 2 người dùng khác nhau và do đó có 2 phiên người dùng khác nhau ở đây. Một thiết bị đầu cuối có thể điều khiển thiết bị đầu cuối chỉ trong một phiên duy nhất).
Quá trình đang chạy shell cho phiên người dùng đó hoặc phiên được gọi là người dẫn đầu phiên.

4. Cũng lưu ý đóng thiết bị đầu cuối bằng cách nhấn nút 'x' không khiến bạn ra khỏi thiết bị đầu cuối đó. Thiết bị đầu cuối đó tiếp tục chạy trong nền. Nếu bạn muốn qua phiên từ thiết bị đầu cuối, bạn phải đăng xuất từ ​​đó bằng cách nhấn CTRL + D hoặc thoát.

5. Khi bạn đăng xuất khỏi terminal, kernel sẽ gửi tín hiệu SIGHUP (tương tự như kill -1) để xử lý đó là người dẫn đầu phiên. Bây giờ mọi quy trình khác đang chạy trong thiết bị đầu cuối là con của nhà lãnh đạo phiên này. Các quy trình con này đã hình thành các nhóm quy trình được kiểm soát bởi quy trình lãnh đạo phiên này (quy trình cha).

6. Quy trình lãnh đạo phiên gửi SIGHUP cho mỗi quy trình con, một số quy trình chấm dứt, trong khi một số có thể chọn không chấm dứt (những quy trình bị đình chỉ hoặc đang chạy trong nền). Những người chọn không chấm dứt trở thành mồ côi như phiên ngoại và ngay lập tức được thông qua bởi quá trình init (cha mẹ của tất cả quá trình trong máy linux).


Để biết thêm Liên kết Tham khảo Mô hình Quy trình Phát triển Linux


1

Một phiên là mỗi vỏ thiết bị đầu cuối được chạy bởi các quy trình của người dùng. Ví dụ, tôi có 3 phiên chạy ngay bây giờ. Môi trường máy tính để bàn Mate của tôi và hai cửa sổ đầu cuối của tôi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.