여러 사용자가 동일한 세션에서 tmate를 사용하고 별도의 커서를 사용하여 동시에 명령을 실행할 수 있습니까?

여러 사용자가 동일한 세션에서 tmate를 사용하고 별도의 커서를 사용하여 동시에 명령을 실행할 수 있습니까?

방금 설치했어요특수 매트그리고파트너 제휴가상 머신에서 여러 사용자가 한 세션에 참여할 때 tmate가 두 사용자가 동기화 모드에서 작업할 수 있도록 허용할 수 있는지 궁금합니다. 즉, 각 사용자가 자신의 tmate 창을 갖고 별도로 명령을 실행한다는 의미입니다(물론 세션 소유자의 계정을 사용함).

Google에서 검색했지만 답변을 찾을 수 없거나 이 설정이 tmate 또는 tmate-slave에 대한 문서에 있는지 여부를 찾을 수 없습니다. 이것이 가능한지 아는 사람이 있으면 알려주십시오.

내가 찾은 가장 가까운 질문은 다음과 같습니다.멀티플렉서tmate는 포크이므로 이 기능이 tmate에 자동으로 포함되나요?

답변1

아니요, 이는 tmate(및 GNU Screen과 같은 유사한 프로그램) 작동 방식으로 인해 불가능합니다.

모든 tmate I/O는 pseudo-tty 또는 "pty"를 통해 이루어집니다. 여기에는 두 가지 측면이 있는데, 이를 사용자 측과 프로세스 측이라고 부르겠습니다. * 프로세스 측에는 3개의 데이터 스트림(바이트 시퀀스)이 있습니다. 프로세스의 데이터로 데이터를 보내는 것과 stdin프로세스의 데이터에서 stdout데이터를 읽는 것입니다 . stderr* 사용자 측에는 두 개의 데이터 스트림이 있습니다. 사용자로부터 입력(예: 입력한 내용)을 읽은 다음 이를 프로세스 측 stdin스트림으로 보내고 데이터를 사용자에게 씁니다. 이는 프로세스 측 Mix stdout및 Mix에서 읽은 모든 것입니다 stderr.

tmate가 하는 일은 pty 클라이언트의 모든 바이트 출력을 가져와 각 바이트의 복사본을 각 tmate 클라이언트에 보내고 모든 클라이언트의 모든 입력을 읽고 혼합하여 pty에 보내는 추가 레이어를 pty 앞에 추가하는 것입니다.

이를 통해 pty의 프로세스 측면에서 stdin( bash, vim, 등)에서 읽는 프로세스는 어떤 클라이언트가 특정 바이트를 보냈는지 알 수 없거나 심지어 여러 클라이언트(또는 전혀)가 있었는지 알 수 없습니다. 고객). 따라서 해당 세션에 대해 "커서"를 생성한 프로세스는 여러 커서를 가질 수 없습니다.

사용자가 명령을 개별적으로 실행하도록 하려면 명령을 별도의 쉘 프로세스로 보내야 합니다. 이는 별도의 tmate 세션을 의미합니다.

관련 정보