web-dev-qa-db-ja.com

UNIX / Linuxが複数の端末を提供するのはなぜですか?

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

これで、ターミナルエミュレータ(Ctrl+Alt+Fn)Unix/Linuxの世界では。

Ubuntu OSでは、7つのターミナルエミュレータが表示され、GUIが7番目のターミナルエミュレータ(Ctrl+Alt+F7)。

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

$ tty
/dev/tty0

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

8
overexchange

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

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

私は仕事で少なくとも3つのターミナルウィンドウを日常的に使用しています。

  1. 私が取り組んでいるシステムのサーバー側のテキストエディター

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

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

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

以前は、Sudoが人気になる前は、rootターミナルを常に開いたままにしていました。

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

私の現在の趣味のプロジェクトの1つ は実際に古い ガラスターミナル を時々使用しています。つまり、複数のターミナルウィンドウがなくなったので、ついに少し学習します- GNU screen 、複数のコンソール端末または複数のGUI端末のどちらかを持っているため、これまであまり使用されなかったプログラム。そして、screenは何をしますか?特に、Linuxの場合と同様に、単一の画面で 複数の仮想端末を提供するように設定 できます。 Ctrl-Alt-Fバツ

25
Warren Young

これは、すべてではないにしても、ほとんどすべてのUnixおよびx86ハードウェアで実行されているようなUnixによって提供される機能です。興味深いことに、仮想コンソールは80年代前半にMicrosoft Xenixによって最初にUnixに導入され、同時CP/Mでも利用可能でした。

この機能は後にAT&T SVR4 Unix、Solarisに統合され、BSDとLinuxによって借用されました。

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

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

他のUnix実装では、後で同じ機能を提供して同じニーズに対応しました。

グラフィック環境、特にX11が広がったとき、同じ画面上で同時に複数の端末エミュレーターを見ることができるようになったことは、大幅な改善でした。しかし、仮想コンソール機能は、グラフィック環境がフリーズしたり、何らかの理由で機能不全になった場合にコンソールに切り替えることができると便利な場合にのみ、一般的に維持されました。

screentmuxのようなユーティリティは、同じ機能を一般化するために仮想端末よりもずっと後になってきたことに注意してください。これらの利点は、ローカルの物理コンソールだけでなく、ローカルまたはリモートのセッション(telnetsshなど)でも使用できることです。物理コンソールで使用する場合、仮想コンソールは、X [11]がフリーズしている場合やウィンドウがキャプチャされている場合など、screen/tmuxが役に立たない状況で機能するため、依然として有用です。フォーカスとそれを解放しません。

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

18
jlliagre

他の質問の多くは、機能が導入された理由を答えているようです。

それでも、実際の質問は次のとおりです。

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

「した」ではなく「した」。

現在の時間に焦点を当てて、現在の理由をいくつか示します。

  • 彼らは便利です。デスクトップ上の他のウィンドウを覆う新しいウィンドウを作成する代わりに、別の端末に切り替えることもできます。次に、元に戻すことができるので、デスクトップが最前面になります。時々(通常、複数のウィンドウが開いている場合)、ターミナルウィンドウをバックグラウンドに配置してから、後で同じウィンドウを前面に表示しようとするよりも(誤って別のターミナルを選択するのではなく)ほうが便利な場合があります。グラフィカルデスクトップにあるウィンドウ)。

    たとえば、Alt-Ctrl-F2は1つのテキストファイル(ドキュメントなど)を見るテキストエディターであり、Alt-Ctrl-F3は別のファイル(例:構成ファイル)、およびコマンドプロンプトにAlt-Ctrl-F4を使用し、グラフィカルデスクトップをWebブラウジング、電子メール、音楽プレーヤーなどに分割できます。
  • ターミナルウィンドウは、グラフィック表示になんらかの問題がある場合に、コンピューターでの作業に役立ちます。現在、グラフィックビデオカードを搭載していない(おそらくカスタマイズされている)コンピュータを使用する必要がある場合は、この機能が不可欠になることがあります。また、現在の必要性に加えて、将来の必要性(後継/後継オペレーティングシステムの場合もある)の可能性もあります。
    • これらのテキスト端末は、使用するリソースが少ない傾向があります。たとえば、グラフィックカードのメモリ使用量が少なくなる傾向があります。したがって、グラフィックカードに3メガバイトと4メガバイトのビデオメモリの機能を損なう物理的な不具合があった場合、クラシックテキスト端末だけを使用している人には影響しません。より少ないリソースを使用するより単純なプロセスは、リカバリの実行に取り組むときに役立ちます。
  • コードは既に存在します。したがって、それらをサポートすることは簡単です。
  • 未使用のターミナル(ログイン前)のリソース量は非常に少ないです。/etc/ttysを調整することで、その少量のメモリでも再利用できます
  • 複数の端末をサポートするコードは、シリアル接続を介したI/Oをサポートするコードにかなり似ています。オペレーティングシステムの開発者は、それを高く評価する傾向がありました。仮想マシンの進歩により、シリアル接続を使用することの価値は、以前ほど重要ではなくなりました。それでも、一部のカーネル開発者(プロセスにすでに精通している)は、そのようなハードウェアを使用することを好むかもしれません。古いハードウェアを使用している組織も、ハードウェアを変更する必要がないというメリットを享受できます。

要約すると、これをサポートしない理由はあまりありません。一部の人々には、少なくともある程度は高く評価されるメリットがあり、コストはそれほど高くありません。

実際、removingこれに対するサポートは、サポートをそのままにするよりも多くの作業になる可能性があります。サポートの削除はおそらく簡単ですが、何か問題が発生した場合、問題の特定と修正は少し難しいかもしれません。したがって、必要な労力の削減(オペレーティングシステムの次のバージョンを開発するため)は、物事をそのままにしておくもう1つの理由です。つまり、この機能は引き続き利用できる傾向があります。

4
TOOGAM

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

私が間違っている場合も私を修正しますが、単一の端末エミュレータから複数のコマンドを異なるユーザーとして実行することはできませんか?

4
user166213

最初に尋ねたのは、Linuxというカーネルの機能です。一般的なUnixではなく、Gnuではありません。

理由については、著者に尋ねる必要があります。しかし、私の推測では、ネットワーク化されていないデバイス(ここでは一種のネットワークとしてRS232が含まれています)の管理者が、別のユーザーをログアウトせずにログインして管理作業を行うことができます。

3
ctrl-alt-delor