Écran GNU et Tmux: trucs et astuces

8

Je suis donc un grand fan des multiplexeurs comme GNU Screen et Tmux , mais même en utilisant Screen depuis des années maintenant, je reconnais qu'il y a beaucoup de choses que je ne sais pas (et j'utilise Tmux seulement pendant quelques mois donc c'est pire ).

Quelles configurations et trucs et astuces vous utilisez sur ces logiciels (les deux ou sur chacun, peu importe)?

J'utilise ceci comme ma configuration d'écran (je pense que j'ai adapté cela par défaut d'Ubuntu screenrc):

shell -$SHELL
startup_message off
defscrollback 1000
hardstatus alwayslastline '%{= wk}%?%-Lw%?%{r}(%{k}%n*%f%t%?(%u)%?%{r})%{k}%?%+Lw%?%?%= %m/%d %C%A'
activity ''
termcapinfo xterm* 'hs:ts=\\E]2;:fs=\\007:ds=\\E]2;screen\\007'

C'est une configuration simple pour garder la barre d'état affichée avec quelques couleurs, mais je suis sûr qu'il y a plus de choses que je peux faire avec l'écran et Tmux et j'aimerais le savoir.

coredump
la source
zombie qrmaintient la fenêtre ouverte même si le processus est mort et permet qde la fermer ou rde la ressusciter. Utile pour la vérification du logiciel.
Ency

Réponses:

4

Cela peut être un peu simple pour cette foule, mais j'ai trouvé utile d'ajouter cela à la fin du .profile, de sorte que lorsque je me connecte à distance via ssh, je puisse lire le MOTD, puis passer à l'écran.

if [ -n "$SSH_TTY" ]
then
        read -p "Press <ENTER> to continue." enterkey
        exec /usr/bin/screen -D -R
fi
bgvaughan
la source
3

Je l'ai dans mon .bashrc. Si vous n'utilisez pas l'écran, cette fonction appelle simplement sshcomme d'habitude lorsqu'elle est exécutée. Si vous exécutez à l'intérieur de l'écran (et que vous n'avez pas modifié la valeur par défaut $TERM), il définit d'abord le nom de la fenêtre sur l'hôte distant (avec tous les paramètres facultatifs). Il est très pratique de garder une trace des connexions à distance lorsque vous en avez plusieurs, ce qui est fréquent dans notre travail, je pense.

function ssh () {
if [ $TERM = "screen-bce" ]
    then
    screen -X title "$*" 
    /usr/bin/ssh $*
else
    /usr/bin/ssh $*
fi
}

J'utilise également bind ^A windowlist -bpour un accès facile à la liste des fenêtres (appuyez simplement deux fois sur ctrl-A).

Prise en charge facile de l'agent ssh pour toutes les fenêtres:

setenv SSH_AUTH_SOCK $HOME/.screen-ssh-agent
screen 10 ssh-agent -a $SSH_AUTH_SOCK $SHELL

Ensuite, dans n'importe quelle fenêtre, vous ne devez ajouter ssh qu'une seule fois lorsque vous démarrez une nouvelle session.

Enfin, lors de la connexion à une session d'écran distante à partir d'une autre session d'écran, vous pouvez utiliser screen -x -e ^Vvpour définir la séquence de contrôle sur CTRL-V (par exemple). Cela évite d'avoir à chaîner CTRL-As pour contrôler la session distante.

Eduardo Ivanec
la source
0

Vous pourriez envisager byobu , qui est essentiellement une collection de centaines de conseils, astuces, configurations, raccourcis clavier, scripts d'état et meilleures pratiques orientées autour de screenet tmux.

Dustin Kirkland
la source
0

Même si j'ai commencé à utiliser tmux pour les volets, j'utilise toujours screen pour multiplexer les fenêtres à l'intérieur. tmux est censé avoir cette fonctionnalité, mais l'échange de volets d'une fenêtre à l'autre n'est pas intuitif pour moi, et deux visionneuses tmux attachées ne peuvent pas afficher des fenêtres différentes dans le même démon (comportement screen -x), donc la solution screen-in-tmux. Ce sont deux liaisons tmux.conf qui m'ont pris le plus de temps à comprendre et que j'utilise tous les jours.

La première, lier M (ctrl-b shift-M), fait basculer tmux entre le sélecteur de volet de la souris et la surbrillance / copie de la souris. Vous pouvez toujours copier / coller en mode de sélection de volet, mais vous devez maintenir shift (et si vous en avez l'habitude, le copier / coller dans toute autre application vous rendra un peu misérable, laissez-moi vous dire). La macro indique également visuellement le mode actuellement sélectionné.

bind M set mouse-select-pane \; if '[ "`tmux show -v mouse-select-pane`"= "on" ]' "set status-bg cyan \; set pane-active-border-bg cyan" "set status-bg green \; set pane-active-border-bg default"

La seconde, lier CL (ctrl-b ctrl-l), prendra n'importe quelle disposition de 4 volets et la transformera en ma disposition préférée. Souvent, je trouve que j'ai appuyé sur Ctrl-D dans un volet que je pensais être à l'intérieur de l'écran pour le fermer, mais à la place, il n'y avait pas de session d'écran et il a fermé le volet. Étant donné que ma mise en page est en V, en H, en V et en certains redimensionnements, si je ferme accidentellement n'importe quelle fenêtre, sauf la dernière, il devient difficile (sans jeu de mots) de fermer tous les volets intermédiaires entre celui dont j'ai besoin pour recréer et le dernier, puis recréez et redimensionnez les volets, et enfin rattachez toutes les sessions d'écran que j'ai pu avoir à détacher lors de la suppression des volets. Avec cette macro, je peux créer un nouveau volet, ctrl-b {(la liaison par défaut pour le volet d'échange -U) jusqu'à ce qu'il soit de retour dans le bon ordre, puis appuyer sur la macro et tout est revenu à la normale. Ma disposition préférée n'est probablement pas la même que la vôtre,list-windows pour obtenir une chaîne de mise en page comme celle ci-dessous.

bind C-L select-layout a18e,155x94,0,0[155x18,0,0,6,155x75,0,19{81x75,0,19,31,73x75,82,19[73x22,82,19,32,73x52,82,42,33]}]

Si c'est trop naïf à votre goût, il y a toujours tmuxinator pour la gestion des volets.

Andrew Domaszek
la source