많은 양의 텍스트가 터미널에 출력될 때 tmux 정지를 방지할 수 있는 방법이 있습니까?

많은 양의 텍스트가 터미널에 출력될 때 tmux 정지를 방지할 수 있는 방법이 있습니까?

xterm 내부의 tmux 세션에서 프로그램이 많은 출력을 생성할 때(예: cat very_long_file전체 세션이 잠시 동안 정지됨) Ctrl-C를 눌러도 아무것도 중단되지 않습니다. 아마도 tmux가 정지되어 Ctrl-C를 전달하지 않기 때문일 것입니다. 출력을 생성하는 프로그램. 이를 방지할 수 있는 방법이 있습니까?

답변1

올바른 해결책은 tmux에 대한 c0-* 옵션을 살펴보고 출력 속도를 제한하는 것입니다. 이 문제가 존재하는 이유는 데이터가 표시할 수 있는 것보다 더 빠르게 터미널로 전송되기 때문입니다. 따라서 속도 제한이 유일한 방법입니다.

답변2

Ubuntu 12.10의 tmux 1.6-2에서 여전히 이 문제가 발생합니다. 내가 찾은 한 가지 해결 방법은 세션(접두사+d)에서 분리한 다음 다시 연결하는 것입니다( tmux attach빠른 셸 별칭에 대한 좋은 후보). tmux가 실제로 내부적으로 반응하는 것처럼 보입니다. ctrl-c를 사용하면 프로세스가 실제로 즉시 종료되는 것을 확인할 수 있습니다. 차단하는 것은 단지 그림일 뿐입니다. 분리는 즉시 작동하며, 다시 부착하면 도면이 끝까지 건너뛰게 됩니다.

답변3

내가 아는 한 현재 릴리스에서는 이를 방지할 수 있는 방법이 없지만 일부 작업이 진행 중입니다. tmux의 메일링 리스트에서 일부 패치를 찾을 수 있습니다.http://thread.gmane.org/gmane.comp.terminal-emulators.tmux.user/2689.

웹 검색에 좋은 키워드는 "흐름 제어"입니다.

답변4

불행하게도 속도 제한을 위한 c0-* 옵션은 tmux 버전 2.1부터 제거되었습니다(변경 로그). 내가 아는 한, 속도 제한을 사용자 정의하는 유일한 방법은 소스 코드(tmux.h)에서 속도 제한에 영향을 미치는 변수를 업데이트하는 것입니다.

"READ_SIZE는 pty(이벤트 하이 워터마크)에서 보관할 수 있는 최대 데이터 크기입니다. READ_BACKOFF는 pty 읽기가 취소되기 전에 tty에 출력되기를 기다리는 데이터의 양입니다. READ_TIME은 tty가 READ_BACKOFF보다 높은 경우 다음 읽기 전에 백오프하는 시간(마이크로초)입니다."

기본값을 찾을 수 있는 위치: (tmux v2.2 기준):

#define READ_SIZE 1024
#define READ_BACKOFF 512
#define READ_TIME 100

관련 정보