ここで私のターミナルの理解を明確にしようとしています。
端末は実際にはデバイス(キーボード+モニター)です。 CLIモードでは、キーボードからの入力は直接シェルに送られ、モニターにも表示されます。
一方、GUIモードを使用する場合は、ターミナルエミュレータープログラムを開いてシェルと対話する必要があります。キーボードからの入力はターミナルエミュレータプログラムに送られ、モニタのターミナルエミュレータウィンドウにも表示されます。入力は直接シェルに送られません。端末エミュレータープログラムは、キーボードからの入力をシェルに中継します。端末エミュレータープログラムは、疑似端末を使用してシェルと通信します。
ブートから直接CLIに移動する場合、ターミナルエミュレータプログラムは必要ありません。
私の理解に問題がある場合はコメントして訂正してください。
更新:読み返しました TTY demystified 。私が尋ねるべきことは、テキストターミナル(テキストモードに直接起動する)とGUIターミナルの違いだと思います。なぜなら、ターミナル=テキストターミナル、ターミナルエミュレータ= GUIターミナルです。 Gnomeターミナル。この更新前の回答から、ユーザーは実際にはGUIモードと同様にターミナルエミュレータプログラム(ユーザー空間)を使用しています。コマンド 'ps aux'を実行しているときにTTYプロセスを見つけたので、それがTTYプログラムであることがわかります。テキストモードでターミナルエミュレータプログラムが関与している(カーネルスペースのターミナルエミュレータを参照していない)ことも知りません。
Update2: Linux console と読みました。それによると、テキストモードはコンソールであり、GUIモードのターミナルソフトウェアはターミナルエミュレータです。まあ、それは理にかなっていて、以前の私の理解と同じです。ただし、 TTY demystifiedからの図 によると、端末エミュレータはユーザー空間ではなくカーネル空間にあります。興味深いことに、この図はテキストモードを示しています。
ここでは、個別に定義する必要があるいくつかの個別の用語があります。
ターミナル:VT100などの実際のキーボード/モニターインターフェイス: https://en.wikipedia.org/wiki/VT1 =
Terminal emulator(TTY):端末をエミュレートし、入力と出力を提供します。ほとんどのLinuxディストリビューションでctrl + alt + F2を押すと、1つになります。ターミナルで「w」と入力すると、「tty」によって実行されたwコマンドが表示されます。
Pseudo-Terminal(PTY):マスター/スレーブペア(ptmx)で、sshやGUI端末などの他のソフトウェアが端末を提供しますスレーブ(pts)を介したインターフェースのような。 http://linux.die.net/man/4/ptmx GUIターミナルで「w」と入力すると、ptsからのwコマンドがリストされます。
Shell:ログイン時に実行され、入力を解釈するコマンドラインインタープリター。この例は、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に関連するプロセスの両方が表示されます。 ttyがpsで表示されているため、これが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端末を使用するときは、疑似端末を使用しています。
(ディスプレイ)端末は、キーボードとディスプレイを備え、ホストコンピューターと通信するハードウェアの一部です。端末自体は小さなコンピュータです。組み込みシステム。
端末エミュレーターは、一部の端末の動作を実装する汎用マシンで実行されるソフトウェアです。
端末エミュレーターはすべてグラフィカルではありません。それらはテキスト表示モードに基づくことができます。この例は、Linuxカーネルのコンソールです。
端末エミュレータは、端末エミュレーション自体も使用できます。この例は、GNU Screenプログラムです。端末が必要ですが、その下で実行されているプログラムに端末エミュレーションを提供します。
ターミナルエミュレータは、ホストコンピュータ自体にアクセスする仮想端末を提供するために、ホストコンピュータで実行できます。ホスト上で実行されているソフトウェアは、接続されているリモート端末と同じホストを参照します。しかし、ターミナルエミュレータは、コンピュータasを使用して、リモートホストにアクセスするためにも使用できます。たとえば、PC上のWindowsで実行されているIBM 3270エミュレーターを使用してメインフレームにアクセスする場合などです。机の上にある実際の3270ではなく、Windowsでソフトウェアを使用しているため、これはエミュレーターです。しかし、Windowsコマンドラインにアクセスするためにそれを使用していません。この種の端末エミュレータのもう1つの例は、Minicom、Hyper Terminalなどのシリアル通信パッケージです。また、人気のあるPuTTY SSHクライアント。