複数のユーザーが同じセッションでtmateを使用し、別々のカーソルを使用して同時にコマンドを実行できますか?

複数のユーザーが同じセッションでtmateを使用し、別々のカーソルを使用して同時にコマンドを実行できますか?

ただインストールしました。特殊マットそしてパートナー提携仮想マシンで複数のユーザーが1つのセッションに参加しているときに、tmateが両方のユーザーが同期モードで作業できるようにすることができるかどうか疑問に思います。つまり、各ユーザーが独自のtmateウィンドウを持ち、別々にコマンドを実行することを意味します(もちろん、セッション所有者のアカウントを使用します)。

Googleで検索しましたが、回答が見つからないか、この設定がtmateまたはtmate-slaveのドキュメントにあるかどうかがわかりません。これが可能かどうかを知っている人がいれば教えてください。

私が見つけた最も近い質問は次のとおりです。マルチプレクサtmateはフォークなので、この機能はtmateに自動的に含まれますか?

ベストアンサー1

いいえ、これはtmate(およびGNU Screenなどの同様のプログラム)の仕組みのために不可能です。

すべてのtmate I / Oはpseudo-ttyまたは "pty"を介して行われます。これには2つの側面がありますが、これをユーザー側とプロセス側と呼びます。 *プロセス側には3つのデータストリーム(バイトシーケンス)があります。プロセスのデータにデータを送信することと、stdinプロセスのデータからstdoutデータを読み取ることです。stderr*ユーザー側には2つのデータストリームがあります。ユーザーから入力(入力した内容など)を読み取り、それをプロセス側ストリームstdinに送信し、データをユーザーに書き込みます。これはプロセス側のMixstdoutとMixから読み取ったものですstderr

tmateが行うことは、ptyクライアントのすべてのバイト出力を取得し、各バイトのコピーを各tmateクライアントに送信し、すべてのクライアントからのすべての入力を読み取り、混合してptyに送信する追加のレイヤをptyの前に追加することです。

これにより、ptyのプロセスの観点からstdin(bash、、、vimなど)から読み取られるプロセスは、どのクライアントが特定のバイトを送信したのか、または複数のクライアント(またはまったく)があったかどうかを知ることができません。顧客)。したがって、そのセッションに対して「カーソル」を作成したプロセスは、複数のカーソルを持つことはできません。

ユーザーにコマンドを個別に実行させるには、コマンドを別のシェルプロセスに送信する必要があります。これは別のtmateセッションを意味します。

おすすめ記事