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で2番目のターミナルに移動します。通常、ディストリビューションは仮想端末でログインプログラム(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」の2番目の列は、プログラムの制御端末も示します。デーモンなどの一部のプログラムでは、列が「?」であることがわかります。これは、端末にバインドされていないことを意味します。
/ dev / pts / 0などは疑似端末デバイスであり、システムディスプレイに接続されていません。たとえば、gnome-terminalまたは他のGUI端末を開いたときに表示される端末。これらは、クライアント側がbashなどのプログラムにエクスポートされるクライアントサーバーベースのアプローチです。プログラムによって擬似端末に送信されたデータは、「サーバー」側に送信されます(通常、これはgnome-terminalなどの別のプログラムによって監視されます)。制御プロセス(サーバー側)は、端末に送信する必要のあるものを決定します。これは、最終的にクライアントに表示されます。これらのデバイスは、システムの制限なしに複数の「GUI端末」を開くのに役立ち、controls(ioctl()、色設定、信号送信[Ctrl + C]など)のような同じ古い端末を引き続き提供します。