ターミナル対ターミナルエミュレータ

ターミナル対ターミナルエミュレータ

ここでは、端末の理解を明確にしようとしています。

端末は実際にはデバイス(キーボード+モニタ)です。 CLIモードでは、キーボード入力がシェルに直接移動してモニターに表示されます。

同時にGUIモードを使用するときにシェルと対話するには、ターミナルエミュレータプログラムを開く必要があります。キーボード入力はターミナルエミュレータプログラムに入り、モニタのターミナルエミュレータウィンドウに表示されます。入力はシェルに直接移動しません。端末エミュレータプログラムはキーボードの入力をシェルに渡します。端末エミュレータプログラムは擬似端末を使用してシェルと通信します。

起動時に直接 CLI を入力した場合、端末エミュレータプログラムは含まれません。

私が理解した内容に間違った部分がある場合は、コメントを付けて訂正してください。

修正する:もう一度読んだTTY公開。私が尋ねる必要があるのは、テキスト端末(テキストモードで直接起動)とGUI端末の違いのようです。これは、端末=テキスト端末、端末エミュレータ=Gnome端末などのGUI端末であると考えたためです。これは間違っています。今回のアップデート前の回答で見ると、ユーザーは実際にはターミナルエミュレータプログラム(ユーザースペース)をGUIモードのように使用しているようです。 「ps aux」コマンドを実行したときにTTYプロセスを見つけたので、TTYプログラムと言えますか?私は端末エミュレータプログラムがテキストモードにも含まれていることを全く知りませんでした(カーネル空間の端末エミュレータを参照していません)。

アップデート2:読んだLinuxコンソール。これによると、テキストモードはコンソールで、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 端末を使用する場合は、疑似端末を使用することです。

おすすめ記事