여기서 터미널에 대한 이해를 명확히하려고 노력하고 있습니다.
터미널은 실제로 장치(키보드 + 모니터)입니다. CLI 모드에서는 키보드 입력이 셸로 직접 이동하여 모니터에 표시됩니다.
동시에 GUI 모드를 사용할 때 쉘과 상호 작용하려면 터미널 에뮬레이터 프로그램을 열어야 합니다. 키보드 입력은 터미널 에뮬레이터 프로그램으로 들어가고 모니터의 터미널 에뮬레이터 창에 표시됩니다. 입력은 쉘로 직접 이동하지 않습니다. 터미널 에뮬레이터 프로그램은 키보드의 입력을 셸로 전달합니다. 터미널 에뮬레이터 프로그램은 의사 터미널을 사용하여 셸과 통신합니다.
부팅에서 직접 CLI를 입력하면 터미널 에뮬레이터 프로그램이 포함되지 않습니다.
제가 이해한 내용에 잘못된 부분이 있다면 댓글을 달아 정정해 주시기 바랍니다.
고쳐 쓰다: 다시 읽었어TTY 공개. 내가 물어봐야 할 것은 텍스트 터미널(텍스트 모드로 직접 부팅)과 GUI 터미널의 차이점인 것 같습니다. 터미널 = 텍스트 터미널, 터미널 에뮬레이터 = Gnome 터미널과 같은 GUI 터미널이라고 생각했기 때문입니다. 이는 잘못된 것입니다. 이번 업데이트 전 답변으로 볼 때, 사용자들은 실제로 터미널 에뮬레이터 프로그램(사용자 공간)을 GUI 모드처럼 사용하고 있는 것으로 보입니다. "ps aux" 명령을 실행했을 때 TTY 프로세스를 찾았기 때문에 TTY 프로그램이라고 말할 수 있습니까? 나는 터미널 에뮬레이터 프로그램이 텍스트 모드에도 포함되어 있다는 사실을 전혀 몰랐습니다(커널 공간의 터미널 에뮬레이터를 참조하지 않음).
업데이트 2: 읽었어리눅스 콘솔. 이에 따르면 텍스트 모드는 콘솔이고 GUI 모드 터미널 소프트웨어는 터미널 에뮬레이터입니다. 글쎄, 그것은 의미가 있고 이전에 이해한 것과 동일합니다. 그러나 따르면TTY의 일러스트레이션 공개, 터미널 에뮬레이터는 사용자 공간이 아닌 커널 공간에 있습니다. 흥미롭게도 이미지는 텍스트 모드를 나타냅니다.
답변1
여기에는 독립적으로 정의해야 하는 몇 가지 별도의 용어가 있습니다.
단말기:VT100과 같은 진정한 키보드/모니터 인터페이스:https://en.wikipedia.org/wiki/VT100
터미널 에뮬레이터(TTY):입력과 출력을 제공하는 아날로그 단자. 대부분의 Linux 배포판에서 ctrl+alt+F2를 누르면 바로 사용할 수 있습니다. 터미널에 "w"를 입력하면 w 명령이 "tty"에 의해 실행되는 것을 볼 수 있습니다.
의사 터미널(PTY):일부 다른 소프트웨어(예: SSH 또는 GUI 터미널)가 슬레이브(pts)를 통해 터미널과 유사한 인터페이스를 제공하는 마스터/슬레이브 쌍(ptmx)입니다.http://linux.die.net/man/4/ptmx GUI 터미널에 "w"를 입력하면 나열된 pts에서 w 명령이 표시됩니다.
껍데기: 로그인 시 실행되고 입력을 해석하는 명령줄 해석기입니다. bash/zsh가 이에 대한 예입니다.
그러나 이러한 용어는 대화에서 모두 상호 교환이 가능하다는 점을 명심하십시오. 누군가 "터미널", "터미널 에뮬레이터", "콘솔", "명령줄" 또는 "셸"을 언급하는 경우 문맥상 달리 명시하지 않는 한 다음을 언급하는 것일 수 있습니다.
"저는 컴퓨터 텍스트 기반 항목을 제어하는 데 사용합니다."
질문 업데이트 수정
pts 또는 pty와 일치하는 모든 프로세스를 아래에서 확인하세요.
root@localhost tests]# ps fauxww | grep -P [pt]t[ys]
root 2604 2.3 0.8 50728 34576 tty1 Ss+ 07:09 1:15 \_ /usr/bin/Xorg :0 -br -verbose -audit 4 -auth /var/run/gdm/auth-for-gdm-VRHaoJ/database -nolisten tcp vt1
root 2569 0.0 0.0 2008 500 tty2 Ss+ 07:09 0:00 /sbin/mingetty /dev/tty2
root 2571 0.0 0.0 2008 500 tty3 Ss+ 07:09 0:00 /sbin/mingetty /dev/tty3
root 2573 0.0 0.0 2008 504 tty4 Ss+ 07:09 0:00 /sbin/mingetty /dev/tty4
root 2575 0.0 0.0 2008 500 tty5 Ss+ 07:09 0:00 /sbin/mingetty /dev/tty5
root 2577 0.0 0.0 2008 504 tty6 Ss+ 07:09 0:00 /sbin/mingetty /dev/tty6
sin 3374 0.2 0.7 90668 28564 ? Sl 07:13 0:09 /usr/bin/python /usr/bin/terminator <<< Added this parent of 3377 manually to see the pts source
sin 3377 0.0 0.0 2076 620 ? S 07:13 0:00 \_ gnome-pty-helper
sin 3378 0.0 0.0 5236 1712 pts/0 Ss 07:13 0:00 \_ /bin/bash
root 4054 0.0 0.0 5124 1676 pts/0 S 07:23 0:00 | \_ bash
root 5034 0.0 0.0 5056 1092 pts/0 R+ 08:03 0:00 | \_ ps fauxww
root 5035 0.0 0.0 4416 740 pts/0 S+ 08:03 0:00 | \_ grep -P [pt]t[ys]
sin 4154 0.0 0.0 5236 1708 pts/1 Ss 07:23 0:00 \_ /bin/bash
sin 4485 0.0 0.0 7252 3500 pts/1 S+ 07:41 0:00 \_ python
pts 및 tty 관련 프로세스가 표시됩니다. ps에서 tty를 봤기 때문에 이것이 GUI 터미널이 사용하는 것이라고 가정하고 있지만 사실은 아닙니다. 이 경우 mingetty TTY 프로세스는 ctrl+shift+F2-6을 통해 사용할 수 있는 모든 프로세스이고, pty는 GUI 터미널 프로세스와 연결된 슬레이브 프로세스입니다. 이를 확인하려면 GUI 터미널 프로세스의 lsof를 확인하세요.
[root@localhost tests]# ps fauxww | grep terminator
sin 3374 0.2 0.7 90668 28564 ? Sl 07:13 0:08 /usr/bin/python /usr/bin/terminator
[root@localhost tests]# lsof -p 3374 | grep '[pt]t[ys]'
/usr/bin/ 3374 sin 17u CHR 136,0 0t0 3 /dev/pts/0
/usr/bin/ 3374 sin 25u CHR 136,1 0t0 4 /dev/pts/1
텍스트 모드로 부팅하면 데스크탑에서 ctrl+alt+f2를 누르는 것과 마찬가지로 TTY를 입력합니다. SSH/GUI 터미널을 사용하는 경우 의사 터미널을 사용하는 것입니다.
답변2
(디스플레이) 터미널은 키보드와 디스플레이가 있고 호스트 컴퓨터와 통신하는 하드웨어입니다. 터미널 자체는 소형 컴퓨터입니다.
터미널 에뮬레이터는 범용 시스템에서 실행되고 특정 터미널 동작을 구현하는 소프트웨어입니다.
터미널 에뮬레이터가 모두 그래픽인 것은 아닙니다. 텍스트 표시 모드를 기반으로 할 수 있습니다. Linux 커널의 콘솔이 그 예입니다.
터미널 에뮬레이터는 터미널 에뮬레이션 자체를 사용할 수도 있습니다. GNU Screen 프로그램이 그 예입니다. 터미널이 필요하지만 터미널에서 실행되는 프로그램에 대한 터미널 에뮬레이션을 제공합니다.
호스트 내에서 터미널 에뮬레이터를 실행하여 호스트 자체에 대한 가상 터미널 액세스를 제공할 수 있습니다. 호스트 시스템에서 실행되는 소프트웨어는 동일한 호스트를 추가 원격 터미널로 취급합니다. 그러나 터미널 에뮬레이터를 사용하여 단순히 컴퓨터를 사용할 수도 있습니다.~처럼일부 원격 호스트에 대한 터미널 액세스. 예를 들어 PC의 Windows에서 실행되는 IBM 3270 에뮬레이터를 사용하여 메인프레임에 액세스합니다. 데스크톱의 실제 3270이 아닌 Windows에서 소프트웨어를 사용하고 있기 때문에 에뮬레이터입니다. 그러나 이를 사용하여 Windows 명령줄에 액세스하는 것은 아닙니다. 이러한 터미널 에뮬레이터의 또 다른 예는 Minicom, HyperTerminal 등과 같은 직렬 통신 패키지입니다. 또한 인기 있는 PuTTY SSH 클라이언트도 있습니다.