리눅스에 왜 / dev / tty가 그렇게 많은가?


27

우분투 10.04에서 / dev에서 확인하면 50 개 이상의 tty가 있습니다. tty0, tty1, tty2 ....

tty는 콘솔 입출력을위한 문자 장치라는 것을 알고 있습니다.

  1. 그런데 왜 그들 중 많은 수가 있습니까? 수영장과 같은 것입니까?

  2. 그리고 / dev / pts / 0, 1, 2 ..., / dev / tty의 차이점은 무엇입니까?

  3. 터미널을 열면 / dev / pts에 새 번호가 생성됩니다. 하지만 언제 / dev / tty를 몰라? 사용.

    SSH 연결을 생성하더라도 / dev / tty 수는 동일합니다.

    내가 할 경우

    cat /dev/tty0
    

    키보드에 무언가를 입력하면 해당 출력이 나타납니다. 왜 이런 일이 발생합니까?


답변:


25

tty는 단지 입력 / 출력 장치가 아닙니다. 또한 신호 전송 (Ctrl + C)과 같이 세션의 제어 터미널로 작동하는 특수 작업도 수행합니다. / dev / ttyNN은 가상 콘솔이며 모니터에 전체 화면으로 표시됩니다.

터미널은 / dev / tty1에서 시작합니다. 일반적으로 Ctrl + Alt + Fn 키를 눌러 이러한 콘솔로 전환 할 수 있습니다.

예를 들어, Ctrl + Alt + F1은 첫 번째 가상 터미널로 이동합니다. 오늘날 대부분의 Linux 배포판은 tty1에서 X 서버를 실행합니다. 따라서 Ctrl + Alt + F1을 눌러도 효과가 없을 수 있습니다.

$ 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를 누르면 두 번째 터미널로 이동합니다. 일반적으로 배포판은 가상 터미널에서 로그인 프로그램 (agetty)을 실행합니다.

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

로그인 프로그램은 로그인 프롬프트를 제공하며 사용자 이름 / 암호로 로그인 할 수 있습니다. init 스크립트는 모든 로그인 프로그램이 실행될 위치를 결정합니다. 따라서 tty9와 같이 로그인 프롬프트가 표시되거나 표시되지 않을 수 있습니다. GUI 인터페이스로 돌아가려면 Ctrl + Alt + F1을 누르십시오 (위 출력 예와 같이).

/ dev / tty0은 현재 장치를 가리키는 특수 장치입니다. 따라서 (가상 콘솔에서) 어디에서 실행하든 tty0에서 읽거나 쓰는 것은 현재 터미널로갑니다.

'ps ax'의 두 번째 열은 또한 프로그램의 제어 터미널을 제공합니다. 데몬과 같은 일부 프로그램의 경우 열이 '?'인 것을 알 수 있습니다. 이는 터미널에 바인딩되지 않았 음을 의미합니다.

/ dev / pts / 0 등은 유사 터미널 장치이며 시스템 디스플레이에 연결되어 있지 않습니다. 예를 들어, 그놈 터미널이나 다른 GUI 터미널을 열면 얻을 수있는 터미널입니다. 이는 클라이언트 쪽을 bash와 같은 프로그램으로 내보내는 클라이언트-서버 기반 접근 방식입니다. 프로그램이 의사 터미널로 전송 한 데이터는 '서버'쪽으로 전송됩니다 (일반적으로 그놈 터미널과 같은 다른 프로그램에 의해 모니터링 됨). 제어 프로세스 (서버 측)는 터미널로 전송해야 할 항목을 결정합니다. 이 장치는 시스템에 제한없이 여러 개의 'GUI 터미널'을 여는 데 도움이되며 컨트롤 (ioctl (), 색상 설정, 신호 전송 [Ctrl + C] 등)과 같은 기존 터미널을 계속 제공합니다.


2
여기서 묻는 것을 제외하고 어떻게 이것을 알아야합니까? 맨 페이지?
n611x007 12

1
@ n611x007- man /dev/pts또한 좋은 시작 man termios입니다. 클라이언트 / 서버는 pty와 ppt 사이에서 양방향입니다. ptmpts -gnome-terminal 또는 xterm과 같은 가상 터미널은 일반적으로 마스터와 bash, 슬레이브와 같은 쉘에 연결됩니다. .
wulfgarpro

내 시스템에서 /dev/tty전류 제어 터미널,하지만 난 무엇을 알고하지 않습니다 /dev/tty0하지만, /dev/tty1리눅스 KMSCON입니다. 그리고 /dev/tty7X 서버입니다.
CMCDragonkai

그래도 질문에 대답하지 않습니다. 대희가 언급했듯이 64 개의 / dev / ttyN 장치가 있습니다. 1-8은 가상 콘솔입니다. pty는 / dev / pts에서 분리되어 있습니다. / dev / tty30은 어떤 시스템에서 사용됩니까?
Andrew McGuinness

1

나는 이런 종류의 것들의 관계를 분명히하고 싶습니다.

먼저 / dev / tty 는 프로세스 수준에 있으며 ttyn (tty1, tty2, ...), ttySn (ttyS0, ttyS1), pty (pts / 0, pts / 1) 등이 될 수 있습니다.

/ dev / tty0 은 현재 (전경) 가상 콘솔의 별칭이므로 tty1, tty2 등이 될 수 있습니다. ttyS0은 별명이 아닙니다. 첫 번째 직렬 포트입니다.

/ dev / console 은 시스템 콘솔이며 / dev / tty0을 기본값으로 가리 킵니다. ttyn, ttySn, ttyUSBn, lpn 등이 될 수 있습니다.

대략 / dev / tty> / dev / cosole> / dev / tty0


어딘가에서 인용 한 것이 있습니까? 흥미로운 독서를 위해 만들 수 있습니다
Xen2050

@ Xen2050 아니오, 그러나이 유용한 tldp.org/HOWTO/Remote-Serial-Console-HOWTO/…
firo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.