web-dev-qa-db-ja.com

tmux / screenを使用した多重化と、ターミナルエミュレータでタブを開くことの違いは何ですか?

Htopを介してメモリとCPU使用率を測定することにより、複数のシェル/プロセスを実行するこれら2つの方法を比較しようとしています。

誰かが各メソッドの機能の違いを説明できますか、または何かあるかどうかを説明できますか?

編集:

私が今理解していることから、tmux/screenおよびその他のマルチプレクサは仮想セッション、つまり元のセッション内の複数の仮想セッションです。これは、実際に新しいセッションを作成しているターミナルで新しいタブを開くのとは対照的です。

ある方法が他の方法よりもパフォーマンス上の利点があるかどうかはまだわかりません。関係する根本的なメカニズムもありません。

それまでの間、このトピックに関するより詳細な知識をお気軽に投稿してください。

以下のこれらのリンクは、基本的な違いを理解するのに役立ちました。

マルチプレクサと端子の関係は?

ターミナルマルチプレクサを使用する利点は何ですか

2
abdelmak

最大の違いは、他の端末(端末エミュレーター、VT、SSHセッション、さらには実際のシリアル端末)から画面またはtmuxセッションに再接続できることですが、端末エミュレーターのタブでは再接続できません。これは単純に聞こえるかもしれませんが、特にリモートシステムを扱っている場合は、screenまたはtmuxを使用することの最大の利点の1つをもたらします。現在のログインセッションの期間を超えて存続する可能性があり、これは非常に便利です。理由の数。

ただし、他にもいくつかの違いがあります。

  • Screenまたはtmuxを使用すると、画面またはtmuxセッションごとに(ウィンドウ/タブごとではなく)常に1つの追加プロセスが発生します。使用するターミナルエミュレーターによっては、追加のプロセスがない場合や、複数のプロセスがある場合があります。
  • Screenまたはtmuxを使用すると、分割ウィンドウやタブ内のアプリケーションでBREAKを送信する機能など、ほとんどのターミナルエミュレーターにはない追加機能が提供されます。
  • ウィンドウ/タブの切り替えに使用されるホットキーは異なります(ただし、どちらも一般的に非常に簡単に再構成できます)。
  • Screenとtmuxはどのターミナルセッションからでも使用できますが、タブはターミナルエミュレーターを使用している場合にのみ使用できます。
  • 画面(および場合によってはtmux)は、端末ロック機能を提供します。基本的に、これはほとんどのデスクトップで見られる画面ロックと同等です。

どちらの場合も、各ウィンドウ/タブには、最終的に1つの疑似端末(通常はPTYと略されます)が関連付けられています。ここでの本当の違いは、入力がどの疑似端末に送信され、出力が表示されるかを実際に制御していることです。擬似端末がどのように機能するかの正確な仕組みは少し複雑ですが、オンラインの複数の場所で十分に文書化されています。基本的な考え方は、実際のハードウェア端末のふりをする方法をプロセスに提供し、端末との通信を期待する別のプロセスを実行できるようにすることです。

どちらのオプションも、システムリソースの観点からはそれほど効率的ではなく、UXの観点からもそれほど効率的ではありません。たとえば、画面はすべてのユーザーに慣れているため、ユーザー自身に大きく依存します。デフォルトのキーバインディング)。

4

どちらの種類のソフトウェアも実際には同じ種類の疑似ttyを使用しており、どちらもほぼ同じ方法で環境を初期化します。

主な違いは、マルチプレクサが「プロキシ」のように機能することです。マルチプレクサは、内部のプログラムに対してはターミナルエミュレータとして機能しますが、メインターミナルエミュレータに対しては通常のプログラム(クライアント)として機能します。

これは、各文字または制御コードがレイヤーを通過するときに2回解釈されることを意味します。 tmuxとgnome-terminalはどちらも独自の状態を維持します。彼らは、画面バッファがどのように見えるかについて独自の考えを持っています(そしてそれは時々同期しなくなるかもしれません)。

また、メインバッファと代替バッファのRAM要件の約2倍を意味します。スクロールバックも複製される可能性がありますが、まれです(tmuxがスクロールバックを 'に切り替えたため、外部端末はスクロールバックを更新しません)代替バッファ ')。

1
user1686