モチベーション

tty,ptsを説明できるようにしたい

tty,ptsとは

ttyはteletypewriter(テレタイプライター),ptsは擬似端末 (pseudo-terminal) の略で,標準出力の接続先デバイスを指す。今では考えられないが,一昔前は1つのホストに色々な人が端末をつないで作業をしていたとのこと.ここでいう端末はWindowsやMacなどのクライアント端末ではなく,キーボードのような役割を果たしていたと考えていいかな.

20141231_tty_pts

僕らが使っているLinuxやMacのターミナルでttyやpsコマンドをうつと出てくるttyはこの名残を受けていてterminalのデバイスファイルとしてどのtty(/dev/ttysXXX)を使ってるのかを表示する.tmuxを実行してペインを分割するとterminal画面があたかも2つになったかのようになるが,実際は2つの/dev/ttysXXX(XXXは数字)を使うことになる.また,ptsはsshでリモートサーバにログインした時に使われるデバイスファイル.

20141231_ssh-pts

gettyとは

ここから引用した,

シリアル接続(モデムも含む)端末からログインする際に、接続パラメーター設定を行なうためのプログラム。UNIXのブート時にinitプロセスがinittabを参照し、inittabに指定されているプログラムが起動される。gettyにはmgetty、agettyなどさまざまなバージョンがある。gettyの基本的な機能は、モデムや端末が接続されている回線(RS232-C)やコンソールを監視して、デバイスがアクティブになると、アクセスしてきたデバイスにログインプロンプトを送り、返ってきたユーザー名をloginプログラムに渡すことだが、シリアル回線の監視は行なわず、仮想端末をサポートするmingettyなどもある。

動作で確認する

1つのホストにsshで2つのコネクションを張った後ログインしてttyコマンドを打つ.

tty&pts

これを見るとそれぞれのコネクションで異なるptsを利用していることがわかる.また,片方のpts/5からもう片方ののpts/7に向かってechoを実行するとpts/7の標準出力に実行結果が表示される.

参考