それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

ttyについて ttyやptsってなんぞ?

PCにシリアルコンソールでログインできるように設定した。シリアルコンソールを使えばNICの設定などでもあわてずに利用できる。便利。シリアルコンソールでつかうmgetty mingettyのttyってなんだろう

ttyとは、

どうやら、標準出力の接続先デバイス事のらしい。一般的にはpts、RS232C経由などはttyS0が標準出力の接続先になっていて、中継しているプログラムがmgetty。

図で表すと

PC----ssh------/dev/pts/1--sshd----bash #ssh が接続されている
PC----rs232c---/dev/ttyS0--mgetty--bash #rs232c が接続されている

とttyなど仮想端末経由になっている。コレ今はよく解ったけど、ずっとよく解らなかった。

私が理解できるようになるまで、次のプロセスがありました。

2ヶ月前 先輩に訊いてみた

俺:tty とか mgetty とかありますけどこれよく分かりません。
大先輩 : tty をmgetty が待ち受けていてtty経由でログインするんだよ

ますますわかりませんでした。大先輩は使ってみたらすぐ分かるんだけど・・・と行ってました。

ググって調べてみた

ttyとは

これが転じて、TTYは、RS-232Cなどのシリアルインターフェースでコンピューターに接続するコンソール入力装置を指すようになった。現在ではコンソールが用いられることもなくなったが、UNIXの仮想的なキャラクター端末のデバイス名として用いられるなどの形で今も名残をとどめている。

http://www.sophia-it.com/content/TTY

ますますよく解りませんでした。

はてな質問で発見!そして解決しました

ちょっとわかりにくい説明になってしまいましたが,たとえば,いま自分が使っている端末がどれかを表示するには,

$ tty

と実行します

psコマンドの結果の、 TTYの項の、 tty2やpts/0はそれぞれどんな… - 人力検索はてな

なるほど

早速やってみた

先輩が試せばすぐ分かるの言葉を思い出してやってみました。


ttyを確認する。
takuya@v10:~$ tty
/dev/pts/1

ということはw /finger /who のコマンドから見えるアレもtty

takuya@v10:~$ w
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
takuya   pts/1    192.168.2.8:S.0  03:45    0.00s  0.50s  0.50s /bin/bash
takuya   pts/2    192.168.2.8:S.1  03:45   14:42   0.35s  0.35s /bin/bash

これは

  1. takuya pts/1
  2. takuya pts/2

の2セッションでログインしています。はてな質問の例の通り、Echoして遊んでみたいと思います。

出力する側
takuya@v10:~$ tty
/dev/pts/1
される側
takuya@v10:~$ tty
/dev/pts/2
出力してみる
takuya@v10:~$ echo foooooobar > /dev/pts/2
takuya@v10:~$ echo foooooobar > /dev/pts/2
された
takuya@v10r:~$ foooooobar
foooooobar

おおおおお pts に出力したら、そっち側に出力できた。コレは面白いですね。
何の役にも立たないけれど面白いですね。

この実験で、ttyは仮想ファイルで出入力を扱うデバイスだとハッキリ体験しました。

write / wall コマンド

write コマンドと wall コマンドで、tty に送信することが出来て、複数人でバトルすると楽しい。

2011/11/11追記

tty と、ptsは ttyがキーボードと出力、PTSは ttysの仮想化。擬似TTY
キーボードは標準入力

2016-02-24追加

ウインドウズで例えたほうが分かりやすいかも

  • bash = cmd.exe
  • tty = conhost.exe

2017-01-24

write/ wall について追記