Neden Linux'ta bu kadar çok / dev / tty var?


27

Ubuntu 10.04'te, eğer / dev altını kontrol edersem, 50'den fazla tty var. tty0, tty1, tty2 ...

Tty'nin konsol giriş / çıkış için bir karakter cihazı olduğunu biliyorum.

  1. ama neden bu kadar çok var? havuz gibi bir şey mi?

  2. ve / dev / pts / 0, 1, 2 ..., / dev / tty arasındaki fark nedir?

  3. Bir terminal açarsam, / dev / pts altında yeni bir sayı oluşturulur. ama ne zaman / dev / tty bilmiyorum? kullanıldı.

    Bir SSH bağlantısı kursam bile, / dev / tty sayısı aynıdır.

    ve eğer yaparsam

    cat /dev/tty0
    

    ve klavyede bir şey yazın, karşılık gelen çıktıları alıyorum. bu neden oluyor?


Yanıtlar:


25

Tty'ler sadece giriş / çıkış cihazları değildir. Ayrıca, sinyal gönderme (Ctrl + C) gibi bir oturumun kontrol terminali olarak da özel bir iş yaparlar. / dev / ttyNN, ekranda tam ekran görüntülenen sanal konsollardır.

Terminaller / dev / tty1'den başlar. Bu konsollara genellikle Ctrl + Alt + Fn tuşlarına basarak geçiş yapabilirsiniz.

örneğin, Ctrl + Alt + F1 sizi ilk sanal terminale götürür. Günümüzde, Linux dağıtımlarının çoğu, X sunucusunu tty1'den çalıştırmaktadır. Bu nedenle, Ctrl + Alt + F1 tuşlarına basmanın bir etkisi olmayabilir.

$ 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 sizi ikinci terminale götürür. Genellikle dağıtımlar sanal terminalde bir giriş programı (agetty) çalıştırır.

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

Giriş programları bir giriş istemi sağlar ve kullanıcı adı / şifre ile giriş yapmanızı sağlar. İnit betiği, tüm giriş programının nerede çalıştırılacağına karar verir. Bu nedenle, oturum açma isteminde görebileceğiniz veya görmeyebileceğinize bağlı olarak, tty9 deyin. GUI arayüzünüze geri dönmek için, Ctrl + Alt + F1 tuşlarına basın (yukarıdaki örnekte olduğu gibi).

/ dev / tty0, mevcut terminale işaret eden özel bir cihazdır. Bu nedenle, onu nereden çalıştırdığınızdan (herhangi bir sanal konsol) bağımsız olarak, tty0'dan okunan / yazılan her şey geçerli terminalinize gider.

'Ps ax' içindeki ikinci sütun ayrıca programın kontrol terminalini verir. Daemon gibi bazı programlarda, sütunun '?' Olduğunu görebilirsiniz, bu da bir terminale bağlı olmadıkları anlamına gelir.

/ dev / pts / 0 etc, sistem ekranına bağlı olmayan psuedo-terminal aygıtlarıdır. örneğin, bir gnome terminali veya başka bir GUI terminali açtığınızda aldığınız terminal. Bunlar, istemci tarafının bash gibi programlara aktarılacağı istemci-sunucu tabanlı bir yaklaşımdır. Program tarafından sözde terminale gönderilen veriler 'sunucu' tarafına gönderilir (genellikle gnome-terminali gibi başka bir program tarafından izlenir). Kontrol süreci (sunucu tarafı), nihayetinde müşteri tarafından görülen terminale ne gönderilmesi gerektiğini belirler. Bu cihazlar, sisteminizde herhangi bir sınırlama olmaksızın birden fazla 'GUI terminali' açmanıza yardımcı olur, yine de kontroller (ioctl (), renk ayarı, Sinyal gönderme [Ctrl + C] vb.) İle aynı eski terminali sağlar.


2
Bu soruyu sormak dışında, bunu nasıl bilebiliriz? bazı adam sayfası?
n611x007 08:13

1
@ n611x007 - man /dev/ptsaynı zamanda, iyi bir başlangıç man termios- istemci / sunucu PTY arasında çift yönlü olduğundan, not PTM ve puanlar gnome-terminal veya xterm gibi bir sanal terminal genellikle ana ve Bash gibi bir kabuk, köle bağlanır - .
wulfgarpro

Sistemimde /dev/ttymevcut kontrol terminali var, fakat ne olduğunu bilmiyorum /dev/tty0, ancak /dev/tty1Linux KMSCON. Ve /dev/tty7X sunucusudur.
CMCDragonkai

Bu soruya cevap vermiyor. Daehee'nin belirttiği gibi 64 / dev / ttyN cihazı var. 1-8 sanal konsollardır. pty'ler / dev / pts altında ayrıdır. Hangi sistemde, / dev / tty30'un hiç kullanılmadığını ve nasıl kullanıldığını söylüyor?
Andrew McGuinness

1

Sadece bu tür şeylerin ilişkilerini netleştirmek istiyorum.

İlk olarak, / dev / tty işlem düzeyinde, ttyn (tty1, tty2, ...), ttySn (ttyS0, ttyS1), pty (pts / 0, pts / 1) ve başka bir şey olabilir.

/ dev / tty0 , geçerli (ön plan) sanal konsolun bir diğer adıdır, bu nedenle tty1, tty2 vb. olabilir. TtyS0'in takma isim olmadığını unutmayın; Bu ilk seri port.

/ dev / console sistem konsolu, varsayılan olarak / dev / tty0 'a işaret ediyor. Ttyn, ttySn, ttyUSBn, lpn vb. Olabilir.

Kabaca, / dev / tty> / dev / cosole> / dev / tty0


Bu bir yerden bir alıntı, bunun için bir referans var mı? İlginç okumalar yapabilir
Xen2050

@ Xen2050 Hayır, ama bu yararlı
olanı
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.