UNIX/Linux がマルチ端末を提供するのはなぜですか?

UNIX/Linux がマルチ端末を提供するのはなぜですか?

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

Unix / Linuxの世界にはターミナルエミュレータ(Ctrl++)がありますAltFn

Ubuntuオペレーティングシステムには7つの端末エミュレータがあり、そのうちのGUIは7番目の端末エミュレータ(Ctrl++)を占めています。AltF7

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

$ tty
/dev/tty0

Unix / Linuxがマルチターミナルエミュレータを提供するのはなぜですか?

答え1

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

同じ理由で、GUI端末エミュレータはタブ(GNOME端末など)をサポートできますが、そうでない場合(例:rxvt)、同じ理由でGUIターミナルアプリケーションの2番目のインスタンスを起動すると、最初のインスタンスを前景にドラッグして終了するのではなく、最初のインスタンスを使用する必要があります。

私は通常、職場で少なくとも3つのターミナルウィンドウを使用し、それ以上を使用することが多いです。

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

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

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

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

以前はsudo人気が高まる前にはroot端末を開いたままにしていました。

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

私の最近の趣味プロジェクトの一つ本物の古いものを使いますガラスターミナル時々これはもはや複数の端末ウィンドウがないことを意味するので、最終的にいくつかを理解します。牛に似た一種の栄養screen、コンソール端末や GUI 端末が複数あるため、以前に使ったことがないプログラムです。何をすべきですかscreen?何よりも、次のことができます。複数の仮想端末を提供するように構成します。Linuxのように単一の画面でCtrl- Alt- 。Fx

答え2

これは、x86 ハードウェア上で動作するほぼすべての Unix および Unix シリーズシステムで提供される機能です。興味深いことに、仮想コンソールは1980年代初頭にMicrosoft XenixによってUnixに初めて導入され、同時CP / Mでも使用できます。

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

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

最初に導入されたとき、これらのUnix実装を実行するシステムには利用可能なグラフィカル環境はありませんでした。 RS232回線を介して物理端末を中央のUnixサーバーに接続することは標準的な慣行ですが、単にユーザーが複数の対話型プログラムを同時に実行できるようにすることが目標であれば、Xenixを実行している標準PCに複数の端末を接続するのは過剰です。仮想端末は、この問題に対するエレガントで便利なソリューションを提供します。

後で、他のUnix実装では、同じ要件を満たすために同じ機能を提供しました。

グラフィック環境(特にX11)が拡張されると、同じ画面で同時に複数の端末エミュレータを表示できることが大幅に改善されました。ただし、仮想コンソール機能は通常、グラフィカル環境が何らかの理由で停止したり、正常に動作しない場合にコンソールに切り替えるのが容易なため維持されます。

同じ機能を一般化するために、screen同じユーティリティを仮想端末よりもはるかに後で使用できます。これらの利点は、ローカル物理コンソールだけでなく、ローカルまたはリモートのすべてのセッション(たとえば、、)tmuxで使用できることです。実際のコンソールで使用すると、仮想コンソールはX11がフリーズしたり、ウィンドウからフォーカスをキャプチャしたが解放しないなど、役に立たない特定の状況で動作できるため、まだ便利です。telnetsshscreentmux

zlogin -C zoneコンテナベースの仮想化(SolarisゾーンやLinux LXCなど)は、コンテナコンソールに接続するか、コンテナコンソールから接続する別の方法も提供しますlxc-console -t 0 -n container

答え3

追加のターミナルエミュレータがある理由は、グラフィカルインターフェイスで何かが間違って使用できなくなった場合は、すぐにターミナルエミュレータに切り替えてグラフィックインターフェイスで発生した問題を修正できることです。これは、ウィンドウマネージャやグラフィックインターフェイスの他の機能を変更したときに実際に頻繁に発生します。より多くの端末を持つことが役に立つと思いますが、6つの基本的なグラフィックインターフェースを持つことはやや過度のようです。

私が間違っている場合は訂正してください。しかし、ある端末エミュレータから別のユーザーとして複数のコマンドを実行できますか?

答え4

まず、Linuxカーネルの機能について問い合わせました。一般的に言えば、UnixカーネルでもGnuカーネルでもありません。

その理由は作家に尋ねなければなりません。しかし、私の考えでは、ネットワークに接続されていないデバイス(ここではRS232をネットワークタイプとして使用)の管理者が他のユーザーをログアウトせずにログインして、いくつかの管理タスクを実行できるようにしているようです。

関連情報