Могут ли несколько пользователей запускать команды одновременно, используя tmate с отдельными курсорами в одном сеансе?

Пробовали ли вы Kimchi? Это самый дружественный к пользователю веб-фронт-энд с открытым исходным кодом на KVM, спонсором которого является IBM.

Main Dashboard

Thumbnail view

Summary View

Отказ от ответственности: я никак не связан с Kimchi. Мне просто нравится его дружелюбие к пользователю.

2
20.09.2018, 22:36
1 ответ

Нет, это невозможно из-за особенностей работы tmate (и подобных программ, таких как GNU Screen ).

Весь tmate ввод-вывод проходит через псевдо -tty, или "pty". У этого есть две стороны, которые я буду называть стороной пользователя и стороной процесса. *Сторона процесса имеет три потока данных (последовательности байтов ):она отправляет данные в stdinпроцесса и считывает данные из stdoutи stderrпроцесса. *Пользовательская сторона имеет два потока данных, :она считывает ввод от пользователя (, например. то, что он набирает ), которое затем отправляется в поток stdinна стороне процесса и записывает данные пользователю, которые представляют собой смесь всего, что читается со стороны процесса stdoutи stderr.

Что делает tmate, так это добавляет дополнительный уровень перед pty, который берет все байты, выводимые с пользовательской стороны pty, и отправляет копию каждого байта каждому клиенту tmate, считывает все входные данные со всех клиентов и отправляет это, смешанный, к pty.

Из этого вы можете видеть, что на стороне процесса pty процесс, читающий со стандартного ввода (bash, vimили чего-то еще ), не может узнать, какой клиент отправил какой-либо конкретный байт, или даже что там несколько клиентов (или вообще какие-либо клиенты ). Таким образом, процесс, который генерирует "курсор" для этого сеанса, не может иметь несколько курсоров.

Если вы хотите, чтобы пользователи выдавали команды по отдельности, они должны отправлять их в отдельные процессы оболочки, что означает отдельные сеансы tmate.

0
27.01.2020, 22:54

Теги

Похожие вопросы