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


8

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

これで、Unix / Linuxの世界にターミナルエミュレーター(Ctrl+ Alt+ Fn)ができました。

Ubuntu OSでは、7つのターミナルエミュレータが表示され、GUIが7番目のターミナルエミュレータ(Ctrl+ Alt+ F7)を占有しています。

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

$ tty
/dev/tty0

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


8
常にそれに対する要求がありました。「screen」という名前のプログラムは、使用可能な端末が1つしかないときに使用されました。
VPfB 2017

7
@vpfb Screenはまだ利用可能で、私のワークフローの不可欠な部分です!
tpg2114 2017

1
ここであなたが質問しているのは、ターミナルエミュレーター(Xterm、rxvt、&cなどのプログラムで、Xでグラフィカルアプリケーションとして実行される)ではなく、グラフィックスを実行していないテキストモードのターミナルだと思います。私が実際に見つけた唯一の使用法(そして、ここ数年ではない)は、Xが正しく機能しないときにデバッグすることです。OTOH私は実際の作業のほとんどをxtermウィンドウで行っており、3から数十以上の空きがある可能性があります。
jamesqf 2017

@jamesqfなぜ端末エミュレータとしてctrl + alt + f1を呼び出さないのですか?1970年代のハードウェアCUI端末ではないため、
オーバーエクスチェンジ

2
@overexchange:親しみのある人々が使用する用語ではないため、私はそれらをそのように呼びません。「linuxターミナルエミュレータ」を検索すると、多くの結果が返されます。そのほとんどは、Ctl-Alt-F [1-7]で取得したテキストモードコンソールとは何の関係もありません。
jamesqf 2017

回答:


25

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

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

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

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

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

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

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

昔は、sudo人気になる前はずっとrootターミナルを開いていました。

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

私の現在の趣味プロジェクトの1つでは、ときどき実際の古いガラスターミナルを使用しています。つまり、複数のターミナルウィンドウがなくなったので、ついに以前はあまり使用されなかったプログラムであるGNUscreenについて少し学んでいます。複数のコンソール端末または複数のGUI端末。そして、何をしscreenますか?とりわけ、あなたがすることができ、あなたに複数の仮想端末を提供するように設定 Linuxはしてないだけのように、一つの画面上にCtrl- - 。AltFx


10
画面についてのより良い点-ダムコンソール端末に複数の端末を置くこと以外-は、セッション、プロセス、または画面用語で行っていた処理を切断、ログアウト、ログインして再接続できることです。立ち止まるな。
ivanivan 2017

@ivanivanの発言に加えて、他の人があなたのスクリーンセッションを見ることができ、複数の人が同時にそれを見ることができます。コンソールのデスクトップ共有のようなものです。
stanri

補足:純粋な画面を使用する方法にはいくつかありますsuperuser.com/q/423310
moooeeeep

18

これは、すべてではないにしても、ほとんどすべての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が普及したとき、同じ画面で複数の端末エミュレータを同時に表示できるようになったことで、大幅な改善が見られました。しかし、仮想コンソール機能は、グラフィック環境がフリーズしたり、何らかの理由で機能不全になった場合にコンソールに切り替えることができると便利な場合に限り、一般的に維持されました。

などのユーティリティことを注意screenとすると、tmux同じ機能を一般化するためにずっと後の仮想端末より来ました。その利点は、(例えばローカルまたはリモートのどちらか、彼らは唯一のローカルの物理的なコンソールではなく、どのようなセッションに使用される非可能ですtelnetssh)。物理コンソールで使用した場合、仮想コンソールは、X11がフリーズしている場合や、ウィンドウがフォーカスを取得して解放していない場合など、screen/ tmuxが役に立たない状況で機能するため、依然として有用です。

SolarisゾーンやLinux LXCのようなコンテナベースの仮想化もzlogin -C zonelxc-console -t 0 -n containerそれぞれ経由でコンテナコンソールに接続する方法を提供します。


4

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

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


「何か間違ったことをした場合」-これは仮想コンソールが存在する理由を説明するものであり、複数(つまり、別の質問に答える)がある理由ではありません。「1つの端末エミュレータから複数のコマンドを異なるユーザーとして実行することはできませんか?」-はい、しかし、それらの出力は混同され、cursesプログラムの実行は困難になります。
RadovanGarabík17年

4

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

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

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

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

それで、現在の時間に焦点を当てて、ここにいくつかの現在の理由があります:

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

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

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

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


多くの場合、歴史的な見方があると便利です。あなたは現在に焦点を当てたいと言いましたが、最後に「Unix / Linuxが現在複数のターミナルエミュレーターを提供している理由の1つは、そもそもそれらを提供していたからです...」
jlliagre

はい。ありました。そうでなければ、今日はそうではないかもしれません。しかし、Unixがそうしたので、それはなぜそれがそうするかという説得力のある理由のままです。過去を知ることの有用性を最小限に抑えるつもりはなかった。私の自然な傾向は、なぜそれが追加されたのかに焦点を合わせることです(そして、私の最初のドラフトまたは2つにはそれがより詳細にありました)、現在に焦点を合わせようとする私の主な理由はそれが質問されたものです。加えて、他の回答は過去について言及しており、ページ上の他の場所ですでに述べられている内容を単に複製するのではなく、述べられているものに追加することによって、有用な答えを出そうとしました。
TOOGAM 2017

3

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

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


はい、カーネルVTはユーザーランドのコードによってセットアップされます。そうです。そういうものを持っている他のUnixもあります。ただし、これは一般的なUnixのものではありません。
ctrl-alt-delor 2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.