Existe-t-il un moyen simple de «redémarrer» un volet tmux?


48

Supposons que j'ai une tmuxfenêtre (1.7) divisée comme suit:

 ________________________
|           1            |
|                        |
|-----------+------------|
|     2     |      3     |
|___________|____________|

Maintenant, les tailles verticales ont été personnalisées, ce qui en fait une des mises en page par défaut.

Parfois, lorsqu'un programme est bloqué ou lorsque vous redémarrez une machine à laquelle vous vous êtes connecté via ssh, le volet "se bloque". Ce n'est rien d'autre que kill-panesemble fonctionner.

Cependant, comme il n’existe aucun moyen facile de reconstruire la configuration ci-dessus une fois le volet n ° 1 l kill-pane, je souhaite le "redémarrer".

Réponses:


82

En regardant le manuel, la commande respawn-panem'a frappé, mais il s'est avéré que cela ne fonctionnait pas. En lisant de plus près, il s'est avéré que respawn-pane -kc'était la réponse, car cela tuerait la commande en cours d'exécution.

De cette façon, un volet peut être "redémarré" et créé de nouveau à la place.

So <prefix>+ :puis entrez respawn-pane -ket appuyez surEnter


4
Ou utilisez sans -ksi vous avez créé le volet en remain-on-exitmode et tué vous-même la commande.
Peter

tu as été engendré à nouveau, amen
cambunctious

4

En fait, il existe un moyen de reconstruire une mise en page - list-windowsvous donne une description de la mise en page pour toutes les fenêtres dans une session et select-layoutpeut digérer analyser la chaîne et définir la mise en page appropriée (voir select-layoutdans la page de manuel tmux(1)).

En ce qui concerne votre problème ssh - les serveurs ssh devraient fermer la connexion une fois le système arrêté (bien que j’ai vu des distributions Linux qui gâchent en quelque sorte le comportement correct en ne fermant pas le démon ssh et n’exécutant pas les sessions correctement) - si tel est le cas, voir la ESCAPE CHARACTERSsection (et les autres endroits s'y rapportant) dans ssh(1)- le caractère d'échappement suivi de .(un point) met fin de force à la connexion côté client. Bien sûr, cela n'aidera pas si vous créez simplement le volet en le sshlançant, mais si vous rencontrez le problème plus souvent, vous préférerez peut-être exécuter un shell dans le volet et appeler ssh à partir de celui-ci.


J'ai voté pour votre réponse, car cela ajoute de la valeur. Mais voici pourquoi les caractères d'échappement ne sont pas forcément une bonne idée: utiliser une session ssh pour se connecter à une session tmux avec des connexions ssh ouvertes. Ensuite, vous devez soudainement réfléchir à la façon dont le caractère d'échappement doit être envoyé au-delà de la première connexion SSH pour atteindre le ou les contacts intérieurs. Et d'ailleurs, je cours généralement ssh depuis un shell.
0xC0000022L

1
À peu près la même chose que lorsque vous exécutez des sessions tmux imbriquées. Soit vous avez différents caractères d'échappement dans les sessions externe et interne (que ce soit ssh ou tmux) ou vous envoyez simplement le caractère d'échappement deux fois - ce qui le fait passer comme un seul dans la session imbriquée (comportement câblé pour ssh, configurable dans tmux).
Peter
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.