Se eu executar um comando com muita saída no tmux, mas decidir cancelá-lo com Ctrl-C, haverá um atraso de 10 a 15 segundos antes que ele pare. No entanto, se eu fizer a mesma coisa fora do tmux, ele será interrompido imediatamente. Por que isso e corrigível?
Na prática, esse problema surge quando estou trabalhando grep -R
em um diretório grande e minha pesquisa não é suficientemente restrita. Uma solução alternativa seria canalizar o resultado wc
primeiro para garantir que a saída não seja muito longa, mas isso é apenas mais uma etapa que eu gostaria de evitar.
Notas:
- Isso tem o mesmo comportamento no Gnome Terminal, uxterm, st e um terminal virtual simples (por exemplo, ctrl-alt-f2), mas o atraso é menor no terminal virtual simples.
- Eu não sou o único: http://www.mail-archive.com/[email protected]/msg01569.html
- O atraso será maior se minha janela do terminal for maior. Para um terminal de tela cheia, leva cerca de 15 segundos para parar
grep -R
(sem outros argumentos) em um diretório inicial desordenado. Para um terminal de 80 × 25 caracteres, ele pára quase imediatamente.
grep -R "a" ~/
(não escrevendo para arquivo) ... eyes | nl | cut -f1 | head -9999999 > ~/file
depoiscat ~/file
.Respostas:
O tmux agora tem as seguintes opções:
Você pode definir valores para eles, o que facilitará a digitação de ^ C e amigos. Veja
man tmux
:fonte
setw -g c0-change-trigger 10
setw -g c0-change-interval 250
>> ~ / .tmux.confVocê sempre pode emitir
kill-pane
comandos de dentro da sessão. Se o texto do terminal parecer lixo renomeando a janela e / ou a emissãoreset
deve corrigi-lo.fonte
Como
tmux
está se inserindo entre ocat
processo e seu terminal, ele precisa ler a saídacat
, gravá-la no terminal e, ao mesmo tempo, ler sua entrada do terminal (the ^ C) e enviá-la ao shell para interromper o processo. comando. Não sei exatamente o que causa o atraso, mas é algo sobre como ostmux
buffers de E / S entre você e o shell são executadostmux
.fonte
Supondo que você esteja usando ssh em uma conexão de baixa latência, você já tentou usar mosh ? Entre outras coisas muito boas, como previsão de entrada, além de desconexões sobreviventes e até mesmo um IP em mudança no lado do cliente, também melhora especificamente o tempo de reação ao usar Ctrl-C (atualizando apenas o conteúdo do terminal periodicamente em vez de enviar todo o fluxo) .
Você pode usar
tmux
dentromosh
sem problemas.fonte
Eu estava tendo esse problema com o tmux 2.3. Tentei definir as opções c0-change-interval e c0-change-trigger, conforme descrito acima, mas elas não estão mais disponíveis. Aqui está a mudança do git com a nova solução tentada: https://github.com/tmux/tmux/commit/3f4ee98162cd5bb7000f93fec0e631e123b1281d
A reversão para o tmux 1.8 corrigiu o problema para mim sem ter que definir nenhuma opção.
fonte