Linuxに/ dev / ttyがたくさんあるのはなぜですか?


27

ubuntu 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で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]など)のような同じ古い端末を引き続き提供します。


2
ここで尋ねる以外は、これをどのように知る必要がありますか?いくつかのマニュアルページ?
n611x007

1
@ n611x007 - man /dev/ptsまた、良いスタートですman termios-クライアント/サーバは疑似端末の間で双方向であることに注意してください、PTMPTS gnome-terminalは、またはxtermのような仮想端末は通常、マスタとのbashなどのシェルに接続され、奴隷- 。
wulfgarpro

私のシステムでは/dev/tty、現在の制御端末ですが、私は何かわからない/dev/tty0が、/dev/tty1LinuxのKMSCONです。そして/dev/tty7、Xサーバーです。
CMCDragonkai

しかし、これは質問に答えません。daeheeが述べたように、64個の/ dev / ttyNデバイスがあります。1〜8は仮想コンソールです。ptyは、/ dev / ptsの下にあります。たとえば、/ dev / tty30はどのシステムで使用されますか?
アンドリューマクギネス

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.