技術ノート Linux Linux の TTY とは何ですか? (および tty コマンドの使用方法)

Linux の TTY とは何ですか? (および tty コマンドの使用方法)

tty コマンドは何をするのでしょうか?使用している端末の名前が出力されます。 TTYは「テレタイプライター」の略です。コマンド名の背後にある物語は何ですか?それにはもう少し説明が必要です。

1800 年代のテレプリンター

1830 年代と 1840 年代に、 テレプリンター として知られる機械が開発されました。これらのマシンは、入力されたメッセージを「回線を介して」離れた場所に送信できます。メッセージは送信者によって一種のキーボードで入力されました。これらは受信側で紙に印刷されました。これらは、それまで モールス信号 や同様の信号に依存していた 電信 の進化のステップでした。

メッセージはエンコードされて送信され、その後受信、デコードされて印刷されます。メッセージのエンコードとデコードにはいくつかの手法が使用されました。最も有名で、最も多作なものの 1 つは、1874 年に エミール ボードー によって特許を取得され、 ボーレートの 名前の由来となっています。彼の文字エンコーディング スキームは ASCII より 89 年前に開発されました。

Baudot のエンコーディングは最終的にテレプリンターのエンコーディングの標準に最も近いものとなり、ほとんどのメーカーで採用されました。 Baudot のオリジナルのハードウェア設計には、ピアノの鍵盤と同様に 5 つの鍵しかありませんでした。オペレーターは、文字ごとに特定のキーの組み合わせを学習する必要がありました。最終的に、Baudot エンコード システムは従来のキーボード レイアウトと結合されました。

その進歩を記念して、この機械はテレタイプライターと名付けられました。これは短縮されてテレタイプになり、最終的には TTY になりました。 TTY という頭字語は そこから来ていますが、電信はコンピューティングとどのような関係があるのでしょうか?

Linux の TTY とは何ですか? (および tty コマンドの使用方法)

アスキーとテレックス

1963 年に ASCII が登場すると、テレタイプ メーカーに採用されました。電話が発明され広く使用されたにもかかわらず、テレタイプは依然として強力でした。

テレックスは 、書かれたメッセージを世界中に送信できるテレタイプの世界的なネットワークでした。これらは、第二次世界大戦後、1980 年代の ファックス機ブーム までの期間、書面によるメッセージを送信する主要な手段でした。

コンピューターも進化していました。リアルタイムでユーザーと対話し、複数のユーザーをサポートできるようになってきました。古いバッチ方式の作業では不十分になりました。人々は結果が出るまで 24 時間以上待つことを望んでいませんでした。パンチカードの束を作成し、結果を一晩待つことは、もはや受け入れられませんでした。

人々は指示を入力し、結果を送り返すことができるデバイスを必要としていました。人々は効率性を求めていました。

Linux の TTY とは何ですか? (および tty コマンドの使用方法)

再利用されたテレタイプ

テレタイプは入出力デバイスとして最適な候補でした。結局のところ、これはメッセージを入力、エンコード、送信、受信、デコード、印刷できるように設計されたデバイスでした。

接続の相手側のデバイスが別のテレタイプではない場合、テレタイプは何を気にするのでしょうか?同じエンコード言語を話し、メッセージを受信して​​メッセージを送り返すことができる限り、テレタイプは満足していました。

そしてもちろん、多かれ少なかれ標準的なキーボードが使用されました。

Linux の TTY とは何ですか? (および tty コマンドの使用方法)

ハードウェアでエミュレートされたテレタイプ

テレタイプは、当時の大型のミニおよびメインフレーム コンピューターと対話するためのデフォルトの手段となりました。

最終的には、電子機器を使用して電気機械機械をエミュレートするデバイスに置き換えられました。これらにはロール紙の代わりに 陰極線管 (CRT) が搭載されていました。コンピューターからの応答を伝えるときにも震えることはありませんでした。これらにより、画面上でのカーソルの移動、画面のクリア、テキストの太字など、これまで不可能だった機能が可能になりました。

DEC VT05 は 仮想テレタイプの初期の例であり、有名な DEC VT100 の祖先です。 DEC VT100 は何百万台も販売されました。

Linux の TTY とは何ですか? (および tty コマンドの使用方法)

ソフトウェアでエミュレートされたテレタイプ

Linux や macOS などの他の Unix 系オペレーティング システムのデスクトップ環境では、ターミナル ウィンドウや x-term Konsole などのアプリケーションが仮想テレタイプの例です。ただし、これらは完全にソフトウェアでエミュレートされます。それらは擬似テレタイプと呼ばれます。これは PTS と短縮されました。

そこで tty 登場します。

Linux の TTY とは何ですか? (および tty コマンドの使用方法)

tty は私たちに何を教えてくれるでしょうか?

Linux には、ターミナル ウィンドウのすべての擬似テレタイプ (PTS) からの接続を処理する擬似テレタイプ マルチプレクサがあります。マルチプレクサはマスターであり、PTS はスレーブです。マルチプレクサは、/dev/ptmx にあるデバイス ファイルを通じてカーネルによってアドレス指定されます。

tty コマンドは、擬似テレタイプ スレーブがマスターとのインターフェースに使用しているデバイス ファイルの名前を出力します。これが事実上、ターミナル ウィンドウの番号になります。

tty ターミナル ウィンドウに対して何をレポートするかを見てみましょう。

てぃ

応答は、/dev/pts/0 のデバイス ファイルに接続していることを示しています。

テレタイプ (TTY) のソフトウェア エミュレーションであるターミナル ウィンドウは、擬似テレタイプ (PTS) として擬似テレタイプ マルチプレクサにインターフェイスされます。そしてそれはたまたまゼロ番です。

Linux の TTY とは何ですか? (および tty コマンドの使用方法)

サイレントオプション

-s (サイレント) オプションを使用すると、 tty 出力を生成しません。

 tty -s

ただし、終了値が生成されます。

  • 0: 標準入力が TTY デバイス (エミュレートされたデバイスまたは物理デバイス) から来ている場合。
  • 1: 標準入力が TTY デバイスから来ていない場合。
  • 2: 構文エラー。間違ったコマンド ライン パラメーターが使用されました。
  • 3: 書き込みエラーが発生しました。

これは、Bash スクリプトで最も役立つと思われます。ただし、コマンド ラインでも、ターミナル ウィンドウ (TTY または PTS セッション) で実行している場合にのみコマンドを実行する方法を示すことができます。

 tty -s && echo "tty 内"

TTY セッションで実行しているため、終了コードは 0 で、2 番目のコマンドが実行されます。

誰のコマンド

他のコマンドでは TTY 番号が明らかになる可能性があります。 who コマンドは、自分自身を含む、ログインしているすべてのユーザーの情報を一覧表示します。

Alec と Mary は Linux コンピューターにリモート接続しています。これらは PTS 1 と 2 に接続されています。

ユーザー dave は「:0」に接続されているように表示されます。

これは、コンピュータに物理的に接続された画面とキーボードを表します。画面とキーボードはハードウェア デバイスですが、デバイス ファイルを通じてマルチプレクサに接続されています。 tty 、それが /dev/pts/2 であることを明らかにします。

誰が

てぃ

TTY へのアクセス

Ctrl+Alt キーを押しながらファンクション キーのいずれかを押すと、全画面 TTY セッションにアクセスできます。

Ctrl+Alt+F3 を押すと、tty3 のログイン プロンプトが表示されます。

ログインして tty コマンドを発行すると、/dev/tty3 に接続されていることがわかります。

これは擬似テレタイプ (ソフトウェアでエミュレートされた) ではありません。それは仮想テレタイプ (ハードウェアでエミュレートされる) です。これは、コンピュータに接続された画面とキーボードを使用して、DEC VT100 が使用していたような仮想テレタイプをエミュレートします。

ファンクション キー Ctrl+Alt とファンクション キー F3 ~ F6 を使用すると、必要に応じて 4 つの TTY セッションを開くことができます。たとえば、tty3 にログインしているときに Ctrl+Alt+F6 を押すと、tty6 に移動できます。

グラフィカル デスクトップ環境に戻るには、Ctrl+Alt+F2 キーを押します。

Ctrl+Alt+F1 を押すと、グラフィカル デスクトップ セッションのログイン プロンプトに戻ります。

かつては、Ctrl+Alt+F1 から Ctrl+Alt+F6 までを押すと全画面 TTY コンソールが開き、Ctrl+Alt+F7 を押すとグラフィカル デスクトップ環境に戻りました。古い Linux ディストリビューションを実行している場合、システムはこのように動作する可能性があります。

これは、Manjaro、Ubuntu、Fedora の現在のリリースでテストされ、すべて次のように動作しました。

  1. Ctrl+Alt+F1: グラフィカル デスクトップ環境のログイン画面に戻ります。
  2. Ctrl+Alt+F2: グラフィカル デスクトップ環境に戻ります。
  3. Ctrl+Alt+F3: TTY 3 を開きます。
  4. Ctrl+Alt+F4: TTY 4 を開きます。
  5. Ctrl+Alt+F5: TTY 5 を開きます。
  6. Ctrl+Alt+F6: TTY 6 を開きます。

これらの全画面コンソールにアクセスできるため、Linux のコマンドラインのみのインストールを使用しているユーザー (多くの Linux サーバーはこのように構成されています) で複数のコンソールを利用できるようになります。

グラフィカル デスクトップ環境を備えた Linux マシンで作業しているときに、何かの原因でセッションがフリーズしたことはありますか?これで、TTY コンソール セッションの 1 つにジャンプして、状況の修正を試みることができます。

top ps 使用して、失敗したアプリケーションを特定し、 kill 使用して終了するか、または shutdown を使用して、コンピュータの状態が許す限り正常に終了することを試みることができます。

たくさんの歴史を持つ 3 つの小さな手紙

tty コマンドの名前は 1800 年代後半のデバイスに由来し、1971 年に Unix に登場し、現在に至るまで Linux および Unix 系オペレーティング システムの一部となっています。

この小さな男には、かなりの物語が隠されている。

Linuxコマンド

ファイル

tar pv cat tac chmod grep diff sed ar man pushd popd fsck testdisk seq fd pandoc cd $PATH awk join jq fold uniq journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · · mkdir · du · ln · パッチ · 変換 · rclone · シュレッド · srm · scp · gzip · chattr · カット · 検索 · umask · wc · tr

プロセス

エイリアス · スクリーン · トップ · ナイス · renice · 進行状況 · strace · systemd · tmux · chsh · 履歴 · at · バッチ · フリー · what · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · タイムアウト · ウォール · はい · キル · スリープ · sudo · su · タイム · groupadd · usermod · · lshw · シャットダウン · 再起動 · 停止 · パワーオフ · パスワード · lscpu · crontab · 日付 · bg · fg · pidof · nohup · pmap

ネットワーキング

netstat ping ip ss whois fail2ban bmon dig finger nmap ftp curl wget who whoami w iptables ssh-keygen ufw arping firewalld

関連: 開発者と愛好家のための最高の Linux ラップトップ

「Linux の TTY とは何ですか? (および tty コマンドの使用方法)」に関するベスト動画選定!

【現役インフラエンジニアが語る】Linuxのviコマンドの操作とは?
【Linux入門】初心者向け!Linuxの基本的なコマンド操作を学ぼう!  〜 Ubuntu 環境で実演〜