Làm thế nào để kiểm tra xem tôi đang sử dụng loại tty nào?


22

Có 7 thiết bị đầu cuối có thể được sử dụng trong hệ thống của chúng tôi. tty7là dựa trên GUI.

Làm thế nào tôi có thể biết rằng tôi đang sử dụng tty nào?

thích, tty1, tty2 .... tty6?


Tại sao bạn cho rằng nó là một "pts" trong các bình luận? Điều đó hoàn toàn khác với những gì bạn yêu cầu ở đây. Phiên trong GUI KHÔNG phải là một tty.
Rinzwind

1
Tôi bối rối về khái niệm này, đó là lý do
luv.preet

Câu trả lời:


30

Có một số cách để tìm ra điều này. Tôi sẽ đi với lệnh who am i(không who):

$ who am i
ravexina    tty2        2017-04-10 11:19 (:0)

Khi tôi ở trong một thiết bị đầu cuối đồ họa, nó sẽ trả về một cái gì đó như:

ravexina    pts/0        2017-04-10 1:19 (:0)

Trong phiên ssh sử dụng kết quả thiết bị đầu cuối đồ họa là như nhau, nhưng thay vì (: 0), tôi sẽ nhận được IP máy của mình (192.168.xx). lệnh khác như w, who, pgrep, ps, vv là hữu ích quá.

Ví dụ: để tìm ra ttygiao diện đồ họa của tôi đang chạy:

ps $(pgrep Xorg)

Trong trường hợp của tôi, vì tôi không sử dụng bất kỳ trình quản lý hiển thị nào như gdm hoặc slim, nó sẽ tạo ra:

 PID  TTY      STAT   TIME COMMAND
 1693 tty1     Sl     0:05 /usr/lib/xorg/Xorg

4
+1, mặc dù trong terminal-terminal who am ikhông trả về gì và whoamitrả về zanna, (trong khi whotrả về tất cả các phiên (tôi nhớ một câu hỏi liên quan (điều đó chứng tỏ không thể trả lời được) khi chúng tôi nhận thấy rằng các trình giả lập khác nhau tạo ra đầu ra khác nhau who)).
Zanna

đồ họa sẽ luôn sử dụng tty7, vì đó là 1 duy nhất cung cấp hỗ trợ đồ họa
luv.preet

1
@Zanna Tôi gặp phải tình huống này bản thân mình, nhưng tôi nghĩ nó đáng để đề cập.
Ravexina

1
Dù sao, who am isẽ luôn hoạt động tốt trong một vt, và pgreprất thông minh (bạn có thể muốn sử dụng $()cú pháp cho lệnh phụ - backticks có thể gây ra một chút khó hiểu khi đánh dấu) vì vậy câu trả lời của bạn rất hay và bất cứ ai hạ thấp nó đều không nên làm như vậy ...
Zanna

1
@ luv.preet không thuộc phạm vi câu hỏi của bạn nhưng hãy xem Sự khác biệt giữa pts và tty :) - bài đăng mà bài này là một bản sao có câu trả lời tuyệt vời
Zanna

14

Sử dụng ttylệnh.

Nếu tôi đúng thì đây là tài liệu tham khảo:

/dev/tty1 - tty1
/dev/tty2 - tty2
/dev/tty3 - tty3
/dev/tty4 - tty4
/dev/tty5 - tty5
/dev/tty6 - tty6

đó là showinng pts / 18.
luv.preet

Pts này có thể đang chạy trong một tty, phải không? Làm thế nào tôi có thể biết điều đó?
luv.preet

5
@ luv.preet đó thiết bị đầu cuối của bạn. Xem "Sự khác biệt giữa pts và tty" .
Chai T. Rex

4
ptscó nghĩa là bạn đang sử dụng thiết bị đầu cuối từ GUI hoặc thông qua SSH
lithium_js

3
Bạn sẽ cần phải hỏi một câu hỏi mới cho điều đó.
Chai T. Rex

6

Hãy lùi lại một bước và bắt đầu với sự nhầm lẫn: tty là gì? Ban đầu tty là tên viết tắt của teletype đã trở thành teletype thủy tinh trở thành bất kỳ thiết bị đầu cuối hoặc kết nối với một cổng, cụ thể là một cổng nối tiếp (Chúng vẫn còn xung quanh, phổ biến nhất là / dev / ttyS0, / dev / ttyUSB0 và đôi khi / dev / ttyacm0). Sau đó, bạn có ttys giả và ttys ảo. các tay unix cũ quen thuộc với các giả giả, chúng được sử dụng cho các thiết bị đầu cuối từ xa (ssh và telnet), thiết bị đầu cuối ảo (xterm và tương tự), và bộ ghép kênh đầu cuối (màn hình và tmux). Ptyudo ttys đã có nhiều cách đặt tên khác nhau theo thời gian nhưng hiện tại sử dụng các tên như / dev / pts / 0. Mặt khác, các tty ảo được liên kết với các bảng điều khiển ảo, cụ thể là khi bạn sử dụng các phím chức năng alt điều khiển, bạn đang chuyển đổi các bảng điều khiển ảo, mỗi bàn được ghép với một tty ảo.

Vì vậy, nếu bạn cần tìm giả giả (hoặc tty ảo khi sử dụng chế độ văn bản), có tất cả các loại giải pháp như who am ihoặc ps ax|grep $$điều này tương đối dễ thực hiện vì có nhiều cách để tìm ra điều này vì giả giả được mở trên io tiêu chuẩn trong hầu hết các trường hợp và có các phương pháp khác hoạt động ngay cả khi io được chuyển hướng. điều này cũng có lợi thế là cũng làm đúng khi sử dụng cổng nối tiếp và ttys ảo miễn là bạn không sử dụng trình giả lập thiết bị đầu cuối đồ họa hoặc bộ ghép kênh đầu cuối.

Nhưng nếu bạn muốn xác định giao diện điều khiển ảo thì sao? sudo fgconsolecó thể hữu ích cho các trường hợp tương tác. Hoặc những gì tôi làm chỉ là đi bộ điều khiển vì chuyển đổi thường đủ nhanh. Tôi không biết về một phương pháp lập trình hoạt động đáng tin cậy trong các trường hợp không tương tác hoặc không liên quan.

Hãy xem xét một ví dụ được đảm bảo là không thể trả lời một cách đáng tin cậy bảng điều khiển ảo bao giờ. Máy tính tôi đang ngồi trước (alpha) có Xserver đang chạy trên tty2 (: 1), tôi có ba cửa sổ mở hai xterms và vncviewer (kết nối với bravo: 2). Một xterm đang chạy màn hình, cái còn lại đang chạy ssh charley. Màn hình có hai cửa sổ mở, ssh delta và ai (người xác định chính xác giả giả trong cột hai và cung cấp gợi ý (:1:S0)trong cột năm cho chúng ta biết rằng giả giả được kết nối với phiên màn hình đầu tiên được kết nối với máy chủ X thứ hai, nhưng không cung cấp bất kỳ thông tin giao diện điều khiển ảo nào). Chạy ai qua phiên ssh cho gợi ý(alpha)trong đó xác định máy mà phiên ssh xuất phát từ đó tương đối tốt cho các phiên từ xa. Mặc dù có rất ít thông tin về những gì được kết nối với giả giả (và hoàn toàn không có bảng điều khiển ảo hoặc thậm chí có sẵn thông tin tty từ xa), ít nhất là máy chủ từ xa được xác định. thông tin về màn hình có thể sai vì các phiên màn hình có thể tháo rời và vnc không cung cấp thông tin hữu ích nào cả vì sự khác biệt duy nhất giữa phiên vnc và phiên cục bộ là số hiển thị. Trong nhiều trường hợp, bạn có thể giả sử rằng: 0 là trên tty7 nhưng không phải lúc nào cũng vậy và không bao giờ thuộc về tôi vì bravo hoàn toàn không có card đồ họa và: 0 là phiên vnc (gây nhầm lẫn cho ai vì nghĩ rằng đó là bảng điều khiển cục bộ) và không ai trong số các máy sử dụng tty7 như một phiên đồ họa, bởi vì tôi (không chỉ trái ngược) kết xuất các bản ghi vào tty7 (và tty5, tty6 và tty8 cũng) di chuyển các phiên đồ họa ở nơi khác. Nhưng màn hình chờ cũng có thể hoạt động như một chương trình đầu cuối cho phép bạn thiết lập phiên qua cáp nối tiếp. Báo cáo phiên như vậy khi ai đang chạy? Tại sao lại vô dụng nhưng cổng nối tiếp cho dù đó là thông qua vnc, xterm, ssh, màn hình và bộ chuyển đổi nối tiếp usb cùng một lúc hoặc được kết nối với televideo của tôi.


6

Khi bạn đã đăng nhập vào một tty, nó sẽ tự động hiển thị tty nào bạn đang sử dụng trên dòng đầu tiên.


Nếu nhấn tổ hợp bàn phím Ctrl+ Alt+ F3chỉ hiển thị màn hình đen, như bạn đã viết trong một nhận xét, có một cách khác để truy cập vào vỏ gốc khi khởi động máy tính mà không cần nhấn Ctrl+ Alt+ F3để hiển thị tty.

  1. Ngay sau màn hình giật gân BIOS / UEFI trong khi khởi động, với BIOS, nhanh chóng nhấn và giữ Shiftphím, sẽ hiển thị menu GNU GRUB. (Nếu bạn thấy logo Ubuntu, bạn đã bỏ lỡ điểm bạn có thể vào menu GRUB.) Với UEFI nhấn (có thể vài lần) Escphím để vào menu GRUB. Đôi khi, màn hình giật gân của nhà sản xuất là một phần của bộ tải khởi động Windows, vì vậy khi bạn bật nguồn máy, nó sẽ chuyển thẳng đến màn hình GRUB, sau đó nhấn Shiftlà không cần thiết.

  2. Từ màn hình GNU GRUB màu tím đầu tiên, chọn Tùy chọn nâng cao cho Ubuntu bằng các phím ↑ và and và nhấn Enter. Sau đó, bạn sẽ được nhắc bởi một menu menu GNU GRUB màu tím khác có danh sách các tùy chọn kernel trong đó.

  3. Nhấn phím mũi tên xuống cho đến khi bạn chọn mục nhập thứ hai từ trên cùng (mục có chế độ khôi phục trong mô tả) rồi nhấn Enter.

    Bây giờ bạn sẽ thấy menu khôi phục này:

    menu phục hồi

  4. Sử dụng các phím mũi tên cuộn xuống gốc và sau đó nhấn Enter.

    Bây giờ bạn sẽ thấy một dấu nhắc gốc, một cái gì đó như thế này:

    root@ubuntu:~#
    
  5. Ở giai đoạn này, bạn nên có một hệ thống tập tin chỉ đọc. Bạn phải truy cập lại nó với quyền ghi:

    mount -o rw,remount /  
    

    Bây giờ bạn có thể chạy các lệnh giống như trong một thiết bị đầu cuối.


cái này luôn mở tty1 à?
luv.preet

Không, nó không mở bất kỳ tty. Thay vào đó, nó gắn kết hệ thống tập tin gốc của Ubuntu mà bạn đã cài đặt trên ổ cứng dưới dạng vỏ tương tác với quyền ghi, cho phép bạn chạy các lệnh trên nó.
karel

3

Tôi đoán bạn đang chăm sóc một cái gì đó khác hơn các câu trả lời khác được cung cấp. Chạy sudo fgconsole để tìm ra tty thực sự đang hoạt động.


@karel Thật dễ dàng để tưởng tượng một tình huống mà bạn bỏ lỡ thông báo TTY hiện tại. Ví dụ, hồ sơ bash của bạn xóa màn hình. Tôi đã cung cấp một lệnh có thể được sử dụng bất cứ lúc nào, không chỉ ngay sau khi đăng nhập. WRT Ctrl + Alt + F1 không hoạt động - có một cách giải quyết nhanh: sử dụng chvt hoặc openvt.
marian adam

Và BTW, chạy nó với sudo. Đó là lý do tại sao bạn gặp lỗi.
marian adam

1

Sử dụng lệnh tty, nó hoạt động trên Linux và macOS và cung cấp một đầu ra khá đơn giản để đọc, chỉ tên của tty bạn đang ở.

Thí dụ:

$ tty
/dev/pts/0

Thật dễ dàng để kịch bản này hoặc đưa nó vào lời nhắc, ví dụ:

$ PS1='`tty`: '
/dev/pts/0: _

Bằng cách này, bạn sẽ luôn biết bạn đang ở trong nhà ga nào.


1

Ngoại trừ GUI, trong trường hợp bạn nhận được điểm, điều này cho thấy đầu ra mong muốn của bạn:

ls -l `tty` | awk '{print $10}'
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.