web-dev-qa-db-fra.com

tmux ne répond plus lors de la mise au point d'un fichier rapidement mis à jour

J'ai un fichier journal que j'écris quelques centaines de lignes à la seconde. Je veux mettre cela dans un volet tmux.

Cependant, lorsque je fais cela, tmux ne répond plus - je ne peux pas changer de volet ni de fenêtre et je ne peux même pas utiliser les touches CTRL + C pour arrêter la queue.

Après environ 3 minutes environ, la touche CTRL + C finira par tuer la queue et je reprendrai le contrôle - mais jusque-là je ne peux rien faire (à l'exception du changement de terminal vers une autre fenêtre telle que mon navigateur).

Y-a-t-il une façon de résoudre ceci? Je soupçonne que le problème est dû à un nombre important de lignes écrites dans le fichier journal.

4
Andy Smith

Le problème est probablement lié à la surcharge de tmux, en particulier si vous avez une division verticale sur votre volet. Vous pouvez configurer tmux pour ne pas mettre à jour l'écran lorsqu'il y a beaucoup de caractères de contrôle en cours d'écriture. Voir man tmux pour plus de détails, mais j'ai ceci dans mon ~/.tmux.conf.

set -g c0-change-trigger 20 #default is 250
set -g c0-change-interval 1000 #default is 100

Cela indique à tmux que lorsque 20 séquences de contrôle par millisecondes sont imprimées à l'écran, tmux devrait changer son intervalle de mise à jour à une fois par 1000 millisecondes (1/s).

3
William Everett

Cela a été grandement amélioré dans tmux 2.1.

Les options c0 spécifiées dans d'autres réponses ont été supprimées et une approche de réduction de la mise en mémoire tampon a été introduite: https://raw.githubusercontent.com/tmux/tmux/master/CHANGES

2
Andy Smith

Ce n'est PAS susceptible d'être causé par le fichier journal de suivi qui est écrit quelques centaines de fois par seconde.

Essayez de vous connecter à la boîte ou d’ouvrir une autre session de terminal, utilisez strace pour vous connecter au processus tmux, consultez les appels système effectués par et les signaux reçus par le processus. Cela aidera certainement.

Exemple: strace -tT -pPID

Sortie dans un fichier strace -tT -pPID -o /path/to/tmux_output

REMARQUE: strace est un débogueur léger, il m'a aidé à résoudre plusieurs problèmes liés à tmux dans le passé, par exemple. tmux impossible de créer/supprimer des fichiers/répertoires dans /var/run ou /run.

1
Terry Wang

Je sais que cela ne résoudra pas votre problème, mais essayez de diriger la sortie de la commande vers less ou more:

  • less vous permet de faire défiler même dans un terminal sans défilement:

    <command> | less
    
  • more imprime une page puis vous appuyez sur Entrée pour faire apparaître toutes les lignes suivantes:

    <command> | more
    
0
Radu Rădeanu