多个用户可以在同一会话中使用 tmate 并使用单独的光标同时发出命令吗?

多个用户可以在同一会话中使用 tmate 并使用单独的光标同时发出命令吗?

我刚刚安装了特马特伙伴从属在一台虚拟机上,我想知道当多个用户参与会话时,tmate 是否可以允许两个用户在同步模式下工作,这意味着每个用户都有自己的 tmate 窗格并分别发出命令(当然使用会话所有者的帐户) ?

我用谷歌搜索但找不到答案,也找不到这个设置是否在 tmate 或 tmate-slave 的文档中。如果有人知道这是否可能,请告诉我。

我发现的最接近的问题涉及多路复用器由于 tmate 是一个分支,因此此功能会自动包含在 tmate 中吗?

答案1

不,由于 tmate(以及类似程序,例如 GNU Screen)的工作方式,这是不可能的。

所有 tmate I/O 都通过伪 tty 或“pty”。这有两个方面,我将其称为用户方和进程方。 * 进程端有3个数据流(字节序列):发送数据到stdin进程的数据,从进程的stdout数据读取数据。 stderr* 用户端有两个数据流:它从用户读取输入(例如他输入的内容),然后将其发送到进程端stdin流,并将数据写入用户,这是从进程端读取的所有内容的混合stdoutstderr

tmate 所做的是在 pty 前面添加一个额外的层,该层获取 pty 用户端的所有字节输出,并将每个字节的副本发送到每个 tmate 客户端,并读取来自所有客户端的所有输入并将其混合发送,到 pty。

由此您可以看到,在 pty 的进程端,从 stdin(bash、、vim或其他)读取的进程无法知道哪个客户端发送了任何特定字节,甚至无法知道有多个客户端(或根本没有任何客户端) 。因此,为该会话生成“光标”的进程无法拥有多个光标。

如果您希望用户单独发出命令,他们需要将它们发送到单独的 shell 进程,这意味着单独的 tmate 会话。

相关内容