Czy istnieje prosty sposób na „ponowne uruchomienie” panelu tmux?

48

Załóżmy, że mam tmuxpodział okna (1.7) w następujący sposób:

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

Teraz rozmiary pionowe zostały dostosowane, więc nie jest to żaden z domyślnych układów.

Czasami, gdy program się zacina lub podczas ponownego uruchamiania komputera, z którym się łączyłeś ssh, panel „zawiesza się”. Tj. Nic innego niż kill-panewydaje się działać.

Ponieważ jednak nie ma łatwego sposobu na przebudowanie konfiguracji podzielonej, gdy panel nr 1 został już kill-paneutworzony, chciałbym go „zrestartować”.

0xC0000022L
źródło

Odpowiedzi:

82

Polecenie respawn-paneuderzyło mnie w instrukcję, ale okazało się, że to nie zadziałało. Przy bliższym czytaniu okazało się, że to respawn-pane -kbyła odpowiedź, ponieważ zabiłoby to uruchomione polecenie.

W ten sposób panel można „zrestartować” i odrodzić się na miejscu.

Więc <prefix>+, :a następnie wprowadź respawn-pane -ki naciśnijEnter

0xC0000022L
źródło
4
Lub użyj bez, -kjeśli utworzyłeś okienko w remain-on-exittrybie i sam zabiłeś polecenie.
peterph
odrodziłeś się na nowo, amen
kambunkcyjny
4

W rzeczywistości istnieje sposób na przebudowanie układu - list-windowsdaje opis układu dla wszystkich okien w sesji i select-layoutmoże przetrawić parsowanie łańcucha i odpowiednio ustawić układ (patrz select-layoutstrona man tmux(1)).

Jeśli chodzi o twój problem z ssh - serwery ssh powinny zamknąć połączenie po zamknięciu systemu (chociaż widziałem niektóre dystrybucje Linuksa, które w jakiś sposób psują prawidłowe zachowanie, nie wyłączając demona ssh i poprawnie uruchamiając sesje) - w takim przypadku, patrz ESCAPE CHARACTERSsekcja (i inne odnoszące się do niej miejsca) ssh(1)znak ucieczki, po którym następuje .(kropka), siłą przerywa połączenie po stronie klienta. Oczywiście to nie pomaga, jeśli po prostu odrodziłeś okienko z sshdziałaniem w nim, ale jeśli częściej doświadczasz problemu, być może wolisz uruchomić powłokę w okienku i wywołać z niego ssh.

Peter
źródło
Poparłem twoją odpowiedź, ponieważ stanowi ona wartość dodaną. Ale oto dlaczego znaki ucieczki niekoniecznie są dobrym pomysłem: użycie sesji ssh w celu połączenia z sesją tmux, która ma otwarte połączenia ssh. Następnie nagle musisz pomyśleć o tym, jak wysłać znak ucieczki poza pierwsze połączenie ssh, aby dotrzeć do wewnętrznego (-ych). A tak przy okazji, zwykle uruchamiam ssh z powłoki.
0xC0000022L
1
Prawie to samo, co podczas uruchamiania zagnieżdżonych sesji tmux. Albo masz różne znaki ucieczki w sesji zewnętrznej i wewnętrznej (czy to ssh, czy tmux), czy po prostu wysyłasz znak ucieczki dwa razy - co sprawia, że ​​przechodzi on jako pojedyncza do sesji zagnieżdżonej (zachowanie przewodowe dla ssh, konfigurowalne w tmux).
peterph