UNIX/Linux が複数のターミナルを提供するのはなぜですか?

UNIX/Linux が複数のターミナルを提供するのはなぜですか?

1970 年代には、入出力用の CUI (キャラクタ ユーザー インターフェイス) インターフェイスを備えたハードウェア ターミナルがありました。

現在、Unix/Linux の世界ではターミナル エミュレータ ( Ctrl++ )Altが存在します。Fn

Ubuntu OS には 7 つのターミナル エミュレーターがあり、GUI は 7 番目のターミナル エミュレーター ( Ctrl++ ) を占有しています。AltF7

たとえば、これは私の最初のターミナル(Ctrl++ AltF1エミュレータです

$ tty
/dev/tty0

Unix/Linux が複数の端末エミュレーターを提供するのはなぜですか?

答え1

UNIX/Linux が [コンソール上に] 複数の端末エミュレーターを提供するのはなぜですか?

同じ理由で、GUI端末エミュレータはタブをサポートしている可能性が高いです(例:GNOMEターミナル)。そうでない場合(例:rxvt) の場合、同じ理由で、2 番目の GUI ターミナル アプリ インスタンスを起動しても、最初のインスタンスがフォアグラウンドにプルされて終了するのではなく、最初のインスタンスが強制的に使用されます。

私は仕事で少なくとも 3 つのターミナル ウィンドウを日常的に使用しており、多くの場合はそれ以上使用します。

  1. 私が作業しているシステムのサーバー側用のテキストエディタ

  2. 同システムのクライアント側テキストエディタ

  3. サーバーを実行するためのコマンドウィンドウ

クライアント プログラムは通常、他の場所 (Web アプリ、ネイティブ GUI アプリ、モバイル アプリなど) で実行されるため、実行に 4 番目のターミナルが必要になることはほとんどありませんが、サーバー アプリ用の CLI クライアントを開発している場合は、そのための別のターミナルも開きます。

昔、sudo普及する前は、rootターミナルを常に開いたままにしていました。

最近は GUI なしでコンソールで対話的に Unix/Linux ボックスを使用することはほとんどありませんが、ヘッドレスで実行し、SSH 経由でアクセスすることはよくあります。私が選んだ SSH ターミナル クライアントは、上記のように構成されたタブをサポートしています。

私の現在の趣味のプロジェクトの一つ本当に古いものを使っていますガラスターミナル時々、複数のターミナルウィンドウを使わなくなったので、ようやく少し勉強になりましたGNUscreenは、複数のコンソール端末または複数のGUI端末を持っていたため、これまであまり利用したことのないプログラムです。では、どのような機能があるのscreenでしょうか。複数の仮想端末を提供するように設定CtrlLinux が--Altの場合と同じように、単一の画面に表示されます。Fx

答え2

これは、x86 ハードウェア上で実行されるほぼすべての Unix および Unix ライクなシステムで提供される機能です。興味深いことに、仮想コンソールは 80 年代初頭に Microsoft Xenix によって最初に Unix に導入され、並行 CP/M でも利用可能でした。

この機能は後に AT&T SVR4 Unix、Solaris に統合され、BSD および Linux にも取り入れられました。

UNIX/Linux が複数の端末エミュレーターを提供するのはなぜですか?

最初に導入されたとき、これらの Unix 実装を実行するマシンで使用できるグラフィック環境はありませんでした。物理端末を RS232 回線で中央 Unix サーバーに接続するのは通常でしたが、単一のユーザーが複数の対話型プログラムを同時に実行することが目的である場合、Xenix を実行する標準 PC に複数の端末を接続するのはやりすぎでした。仮想端末は、この問題に対する洗練された便利なソリューションを提供しました。

他の Unix 実装でも、後に同じニーズを満たすために同じ機能が提供されました。

グラフィック環境、特に X11 が普及したとき、同じ画面で同時に複数のターミナル エミュレーターを表示できることは大きな改善でした。ただし、何らかの理由でグラフィック環境がフリーズしたり機能しなくなったりした場合にコンソールに切り替えることができるのは便利であるという理由だけで、仮想コンソール機能は一般に維持されました。

や などのユーティリティは、同じ機能を一般化するために仮想端末よりずっと後に登場したことに注意してください。これらのユーティリティの利点は、ローカルの物理コンソールだけでなく、ローカルまたはリモートの任意のセッション (例: 、) でも使用できることですscreen。物理コンソールで使用する場合、仮想コンソールは、X11 がフリーズした場合やウィンドウがフォーカスを取得して解放しない場合など、 / が役に立たない状況でも機能するため、依然として便利です。tmuxtelnetsshscreentmux

zlogin -C zoneSolaris ゾーンや Linux LXC などのコンテナ ベースの仮想化でも、それぞれおよびを介してコンテナ コンソールに接続する方法が提供されますlxc-console -t 0 -n container

答え3

追加のターミナル エミュレーターを用意する 1 つの理由は、グラフィカル インターフェイスで何か間違ったことをして使用できなくなった場合に、ターミナル エミュレーターにすばやく切り替えて、グラフィカル インターフェイスで発生しているすべての問題を修正できることだと思います。これは、ウィンドウ マネージャーやグラフィカル インターフェイスのその他の機能に変更を加えるときに実際によく発生します。ターミナルがもう 2、3 個あれば便利だと思いますが、メインのグラフィカル インターフェイスの上に 6 個も用意するのは少し多すぎるように思います。

また、間違っていたら訂正していただきたいのですが、1 つのターミナル エミュレータから異なるユーザーとして複数のコマンドを実行することはできないのでしょうか?

答え4

まず最初に質問されたのは、Linux というカーネルの機能です。Unix 全般や Gnu の機能ではありません。

理由については、作者に問い合わせる必要があります。ただし、私の推測では、ネットワークに接続されていないデバイス (ここではネットワークの種類として RS232 を含めます) の管理者が、別のユーザーをログアウトさせることなく、ログインして管理作業を実行できるようになるためだと思います。

関連情報