Tại sao có nhiều / dev / tty trong Linux?


27

Trong Ubuntu 10.04, nếu tôi kiểm tra dưới / dev, có hơn 50 tty. tty0, tty1, tty2 ....

Tôi hiểu tty là một thiết bị ký tự cho đầu vào / đầu ra của bàn điều khiển.

  1. nhưng tại sao có rất nhiều trong số họ? nó có giống cái gì không?

  2. và sự khác biệt giữa / dev / pts / 0, 1, 2 ..., / dev / tty là gì?

  3. Nếu tôi mở một thiết bị đầu cuối, số mới được tạo dưới / dev / pts. nhưng tôi không biết khi nào / dev / tty? Được sử dụng.

    ngay cả khi tôi tạo kết nối SSH, số lượng / dev / tty s là như nhau.

    và nếu tôi làm

    cat /dev/tty0
    

    và gõ một cái gì đó trong bàn phím, tôi nhận được kết quả đầu ra tương ứng. Tại sao chuyện này đang xảy ra?


Câu trả lời:


25

Các ttys không chỉ là thiết bị đầu vào / đầu ra. Họ cũng thực hiện một công việc đặc biệt là đóng vai trò là thiết bị đầu cuối điều khiển cho một phiên, như gửi tín hiệu (Ctrl + C). / dev / ttyNN là các bảng điều khiển ảo, được hiển thị toàn màn hình trên màn hình.

Các thiết bị đầu cuối bắt đầu từ / dev / tty1. Thông thường, bạn có thể chuyển sang các bảng điều khiển này bằng cách nhấn các phím Ctrl + Alt + Fn.

ví dụ: Ctrl + Alt + F1 sẽ đưa bạn đến thiết bị đầu cuối ảo đầu tiên. Ngày nay, hầu hết các bản phân phối Linux chạy máy chủ X từ tty1. Vì vậy, nhấn Ctrl + Alt + F1 có thể không có hiệu lực.

$ ps ax | grep Xorg | grep -v grep
 1504 tty1     Ss+   44:57 /usr/bin/Xorg :0 -background none -verbose -auth /var/run/gdm/auth-for-gdm-rfsWyA/database -nolisten tcp vt1

Ctrl + Alt + F2 sẽ đưa bạn đến thiết bị đầu cuối thứ hai. Thông thường các bản phân phối chạy một chương trình đăng nhập (agetty) trên thiết bị đầu cuối ảo.

$ ps ax | grep tty2 | grep -v grep
31865 tty2     Ss+    0:00 /sbin/agetty tty2 38400

Các chương trình đăng nhập cung cấp cho bạn lời nhắc đăng nhập và cho phép bạn đăng nhập bằng tên người dùng / mật khẩu. Các tập lệnh init quyết định, nơi tất cả các chương trình đăng nhập sẽ được chạy. Vì vậy, tùy thuộc vào việc bạn có thể hoặc không thể thấy lời nhắc đăng nhập trên, hãy nói tty9. Để quay lại giao diện GUI của bạn, nhấn Ctrl + Alt + F1 (như ví dụ đầu ra ở trên).

/ dev / tty0 là một thiết bị đặc biệt, trỏ đến thiết bị đầu cuối hiện tại. Vì vậy, bất kể bạn chạy nó từ đâu (bất kỳ bảng điều khiển ảo nào), mọi thứ được đọc từ / ghi đến tty0 đều chuyển đến thiết bị đầu cuối hiện tại của bạn.

Cột thứ hai trong 'ps ax' cũng cung cấp đầu cuối điều khiển của chương trình. Đối với một số chương trình, như trình nền, bạn có thể thấy rằng cột là '?', Điều đó có nghĩa là chúng không bị ràng buộc với một thiết bị đầu cuối.

/ dev / pts / 0 vv là các thiết bị đầu cuối psuedo, không được gắn vào màn hình hệ thống. ví dụ: thiết bị đầu cuối bạn nhận được khi mở thiết bị đầu cuối gnome hoặc bất kỳ thiết bị đầu cuối GUI nào khác. Đây là cách tiếp cận dựa trên máy khách-máy chủ nơi phía khách sẽ được xuất sang các chương trình, như bash. Dữ liệu được gửi bởi chương trình đến thiết bị đầu cuối giả được gửi đến phía 'máy chủ' (thường được theo dõi bởi một chương trình khác, như thiết bị đầu cuối gnome). Quá trình kiểm soát (phía máy chủ) xác định những gì cần được gửi đến thiết bị đầu cuối, cuối cùng được khách hàng nhìn thấy. Các thiết bị này giúp bạn mở nhiều 'thiết bị đầu cuối GUI' mà không có bất kỳ giới hạn nào trên hệ thống của bạn, vẫn cung cấp cùng một thiết bị đầu cuối cũ như điều khiển (ioctl (), cài đặt màu, gửi tín hiệu [Ctrl + C], v.v.).


2
Làm thế nào người ta nên biết điều này, ngoại trừ hỏi nó ở đây? mấy trang nam?
n611x007

1
@ n611x007 - man /dev/ptscũng là một khởi đầu tốt, cũng man termioslưu ý rằng máy khách / máy chủ là hai chiều giữa các ptys - ptmpts - trong đó một thiết bị đầu cuối ảo như gnome-terminal hoặc xterm thường được kết nối với chủ và vỏ như bash, nô lệ .
wulfgarpro 9/12/2015

Trên hệ thống của tôi /dev/ttylà thiết bị đầu cuối kiểm soát hiện nay, nhưng tôi không biết gì /dev/tty0, tuy nhiên /dev/tty1là KMSCON Linux. Và /dev/tty7là máy chủ X.
CMCDragonkai

Điều này không trả lời câu hỏi mặc dù. Như daehee nhận xét, có 64 thiết bị / dev / ttyN. 1-8 là bảng điều khiển ảo. ptys là riêng biệt, dưới / dev / pts. Trên hệ thống nào, nói, / dev / tty30 bao giờ được sử dụng, và làm thế nào?
Andrew McGuinness

1

Tôi chỉ muốn làm rõ các mối quan hệ của loại điều này.

Đầu tiên, / dev / tty ở mức quy trình, nó có thể là ttyn (tty1, tty2, ...), ttySn (ttyS0, ttyS1), pty (pts / 0, pts / 1) và một cái gì khác.

/ dev / tty0 là bí danh của giao diện điều khiển ảo hiện tại (tiền cảnh), vì vậy nó có thể là tty1, tty2, v.v. Lưu ý rằng ttyS0 không phải là bí danh; Đây là cổng nối tiếp đầu tiên.

/ dev / consolegiao diện điều khiển hệ thống, nó trỏ đến / dev / tty0 làm mặc định. Nó có thể là ttyn, ttySn, ttyUSBn, lpn, v.v.

Roughly, / dev / tty> / dev / cosole> / dev / tty0


Đó có phải là một trích dẫn từ đâu đó, có một tài liệu tham khảo cho nó? Có thể làm cho việc đọc thú vị
Xen2050

@ Xen2050 Không, nhưng hy vọng điều này hữu ích tldp.org/HOWTO/Remote-Serial-Console-HOWTO/ Kẻ
firo
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.