Si ejecuto un comando con mucha salida en tmux, pero decido cancelarlo con Ctrl-C, hay un retraso de 10-15 segundos antes de que se detenga. Sin embargo, si hago lo mismo fuera de tmux, se detiene de inmediato. ¿Por qué es esto y es reparable?
En la práctica, este problema surge cuando lo estoy haciendo grep -R
en un directorio grande y mi búsqueda no está lo suficientemente restringida. Una solución alternativa sería canalizar el resultado wc
primero para asegurarse de que el resultado no sea demasiado largo, pero ese es solo otro paso que me gustaría evitar.
Notas:
- Esto tiene el mismo comportamiento en Gnome Terminal, uxterm, st y un terminal virtual simple (por ejemplo, ctrl-alt-f2), pero el retraso es menor en el terminal virtual simple.
- No soy el único: http://www.mail-archive.com/[email protected]/msg01569.html
- El retraso es mayor si la ventana de mi terminal es más grande. Para un terminal de pantalla completa, tarda unos 15 segundos en detenerse
grep -R
(sin otros argumentos) en un directorio de inicio desordenado. Para un terminal de 80 × 25 caracteres, se detiene casi de inmediato.
grep -R "a" ~/
(no escribir en el archivo) ... yyes | nl | cut -f1 | head -9999999 > ~/file
luegocat ~/file
.Respuestas:
tmux ahora tiene las siguientes opciones:
Puede establecer valores para estos, lo que hará que ^ C y sus amigos sean más fáciles de escribir. Ver
man tmux
:fuente
setw -g c0-change-trigger 10
setw -g c0-change-interval 250
>> ~ / .tmux.confSiempre puede emitir
kill-pane
comandos desde la sesión. Si el texto del terminal parece basura, al cambiar el nombre de la ventana y / o al emitirlo,reset
debería solucionarlo.fuente
Como se
tmux
está insertando entre elcat
proceso y su terminal, necesita leer la salidacat
, escribirla en la terminal y, al mismo tiempo, leer su entrada desde la terminal (el ^ C) y enviarla al shell para interrumpir el mando. No estoy seguro de qué causa exactamente la demora, pero es algo sobre cómotmux
amortigua la E / S entre usted y el shell que se ejecutatmux
.fuente
Suponiendo que está usando ssh sobre una conexión de baja latencia, ¿ha intentado usar mosh ? Entre otras cosas muy buenas como la predicción de entrada, así como las desconexiones sobrevivientes e incluso una IP cambiante en el lado del cliente, también mejora específicamente el tiempo de reacción cuando se usa Ctrl-C (al actualizar periódicamente el contenido del terminal en lugar de enviar todo el flujo) .
Puede usar
tmux
dentromosh
sin ningún problema.fuente
Estaba teniendo este problema con tmux 2.3. Intenté configurar las opciones c0-change-interval y c0-change-trigger como se describió anteriormente, pero ya no están disponibles. Aquí está el cambio de git con el nuevo intento de solución: https://github.com/tmux/tmux/commit/3f4ee98162cd5bb7000f93fec0e631e123b1281d
Volviendo a tmux 1.8 me solucionó el problema sin tener que configurar ninguna opción.
fuente