W Ubuntu 10.04, jeśli sprawdzę pod / dev, jest więcej niż 50 tty. tty0, tty1, tty2 ....
Rozumiem, że tty jest urządzeniem znakowym dla wejścia / wyjścia konsoli.
ale dlaczego jest ich tak wiele? czy to jest coś takiego jak basen?
a jaka jest różnica między / dev / pts / 0, 1, 2 ..., / dev / tty?
Jeśli otworzę terminal, nowy numer zostanie utworzony pod / dev / pts. ale nie wiem kiedy / dev / tty? Jest używane.
nawet jeśli utworzę połączenie SSH, liczba / dev / tty jest taka sama.
a jeśli to zrobię
cat /dev/tty0
i wpisuję coś na klawiaturze, otrzymuję odpowiednie dane wyjściowe. dlaczego to się dzieje?
Odpowiedzi:
Tty to nie tylko urządzenia wejścia / wyjścia. Wykonują także specjalne zadanie, działając jako terminal kontrolny dla sesji, na przykład wysyłając sygnały (Ctrl + C). / dev / ttyNN to wirtualne konsole, które są pełnoekranowymi wyświetlaczami na monitorze.
Terminale zaczynają się od / dev / tty1. Możesz przełączyć się na te konsole, zwykle naciskając klawisze Ctrl + Alt + Fn.
np. Ctrl + Alt + F1 przeniesie Cię do pierwszego wirtualnego terminala. Obecnie większość dystrybucji Linuksa obsługuje serwer X z tty1. Tak więc naciśnięcie Ctrl + Alt + F1 może nie przynieść efektu.
Ctrl + Alt + F2 przeniesie Cię do drugiego terminala. Zwykle dystrybucje uruchamiają program logowania (agetty) na terminalu wirtualnym.
Programy do logowania wyświetlają monit o zalogowanie i umożliwiają logowanie przy użyciu nazwy użytkownika / hasła. Skrypty inicjujące decydują, gdzie zostanie uruchomiony cały program logowania. Więc w zależności od tego możesz zobaczyć monit o zalogowanie się, powiedz tty9. Aby powrócić do interfejsu GUI, naciśnij Ctrl + Alt + F1 (jak w przykładzie wyjściowym powyżej).
/ dev / tty0 to specjalne urządzenie, które wskazuje aktualny terminal. Niezależnie od tego, skąd go uruchamiasz (dowolna konsola wirtualna), wszystko, co jest czytane / zapisywane do tty0, trafia do twojego bieżącego terminala.
Druga kolumna w „ps ax” podaje również terminal sterujący programu. W przypadku niektórych programów, takich jak demony, może się okazać, że kolumna to „?”, Co oznacza, że nie są powiązane z terminalem.
/ dev / pts / 0 itp. to urządzenia psuedo-terminal, które nie są podłączone do wyświetlacza systemu. na przykład terminal otrzymujesz po otwarciu terminalu gnome lub dowolnego innego interfejsu GUI. Są to podejście klient-serwer, w którym strona klienta zostanie wyeksportowana do programów, takich jak bash. Dane wysyłane przez program do pseudo terminala są wysyłane po stronie „serwera” (która jest zwykle monitorowana przez inny program, na przykład gnome-terminal). Proces kontrolny (po stronie serwera) określa, co należy wysłać do terminala, co ostatecznie widzi klient. Urządzenia te pomagają otwierać wiele „terminali GUI” bez żadnych ograniczeń w systemie, nadal zapewniając ten sam stary terminal, jak elementy sterujące (ioctl (), ustawienia kolorów, wysyłanie sygnałów [Ctrl + C] itp.).
źródło
man /dev/pts
to dobry początek, należy równieżman termios
pamiętać, że klient / serwer jest dwukierunkowy między ptys - ptm i pts - gdzie terminal wirtualny, taki jak gnome-terminal lub xterm, jest zwykle podłączony do master i powłoki jak bash, slave ./dev/tty
jest obecny terminal kontrolny, ale nie wiem, co to jest/dev/tty0
, jednak/dev/tty1
jest Linux KMSCON. I/dev/tty7
jest serwerem X.Chcę tylko wyjaśnić relacje tego rodzaju rzeczy.
Po pierwsze, / dev / tty jest na poziomie procesu, może to być ttyn (tty1, tty2, ...), ttySn (ttyS0, ttyS1), pty (pts / 0, pts / 1) i coś innego.
/ dev / tty0 to alias bieżącej (nowej wiedzy) konsoli wirtualnej, więc może to być tty1, tty2 itd. Zauważ, że ttyS0 nie jest aliasem; To pierwszy port szeregowy.
/ dev / console jest konsolą systemową, domyślnie wskazuje / dev / tty0. Może to być ttyn, ttySn, ttyUSBn, lpn i tak dalej.
Z grubsza, / dev / tty> / dev / cosole> / dev / tty0
źródło