環境
focal (Ubuntu 20.04)
内容
Linuxにログインしているユーザーの一覧を表示するには、wコマンド(もしくはwhoコマンド)を使う。このとき表示される情報に、TTYがある。TTYとはteletypewriter(テレタイプライター)の略で、昔はTTYとよばれるハードを使って、通信をおこなっていた時代があったらしい。今でも、Linuxでは仮想的にTTYを使ってホストと端末の間で通信をおこなっているということになる。
端末からターミナルを使ってSSHで接続すると、ホスト側で**/dev/ptsに0**というファイルが自動生成される。
数値だけだと、なにかのパラメータ値のような印象で、なぜ、このようなファイル名なの?という印象ではあるが、デバイスファイルと呼ばれるファイルです。ls -l /dev/ptsを実行すると、ttyというグループに属し、ファイルタイプがCになっています。
ホストに接続する端末が増えるたびに、デバイスファイルの数字が連番で増えていきます。例えば、デバイスファイル0が1つある状態で、新たに別の端末からSSHで接続すると、その端末のデバイスファイルは1で自動生成されます。デバイスファイルとは、SSHで接続したときの仮想的な端末インターフェースのことです。物理的なインターフェースNICではありますが。
デバイスファイルを指定して自分の端末から、別の端末にメッセージを送ることができる。自分の端末のデバイスファイルが0だとして、デバイスファイルが1の端末にメッセージを送ってみよう。
echo "おーい!" > /dev/pts/1
すると、デバイスファイルが1の端末のコンソールに"おーい!"がリアルタイムで表示されます。実験してみると面白いです。