Apakah ada cara mudah untuk "memulai kembali" panel tmux?

48

Asumsikan saya memiliki tmux(1,7) window split sebagai berikut:

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

Sekarang, ukuran vertikal telah disesuaikan, jadi tidak berarti salah satu tata letak default.

Kadang-kadang, ketika sebuah program macet atau ketika Anda me-reboot mesin yang terhubung dengan Anda ssh, panel "hang". Yaitu tidak lain selain kill-paneberfungsi.

Namun, karena tidak ada cara mudah untuk membangun kembali konfigurasi split setelah panel # 1 telah kill-paned, saya ingin "me-restart" itu.

0xC0000022L
sumber

Jawaban:

81

Melihat manual, perintah itu respawn-panemengejutkan saya, tetapi ternyata ini tidak berhasil. Membaca lebih dekat, ternyata itulah respawn-pane -kjawabannya, karena itu akan mematikan perintah yang sedang berjalan.

Dengan cara ini sebuah panel dapat "direstart" dan muncul kembali di tempat.

Jadi <prefix>+ :lalu masuk respawn-pane -kdan tekanEnter

0xC0000022L
sumber
4
Atau gunakan tanpa -kjika Anda membuat panel dalam remain-on-exitmode dan membunuh perintah sendiri.
peterph
Engkau telah melahirkan lagi, amin
cambunctious
4

Sebenarnya, ada cara untuk membangun kembali tata letak - list-windowsmemberi Anda deskripsi tata letak untuk semua jendela dalam satu sesi dan select-layoutdapat mencerna penguraian string dan mengatur tata letak dengan tepat (lihat select-layoutdi halaman manual tmux(1)).

Adapun masalah ssh Anda - ssh server harus menutup koneksi begitu sistem dimatikan (meskipun saya telah melihat beberapa distribusi Linux yang entah bagaimana mengacaukan perilaku yang tepat dengan tidak mematikan daemon ssh dan menjalankan sesi dengan benar) - jika itu masalahnya, lihat ESCAPE CHARACTERSbagian (dan tempat-tempat lain yang mengacu padanya) ssh(1)karakter in -escape diikuti oleh .(titik) dengan paksa mengakhiri koneksi di sisi klien. Tentu saja itu tidak membantu jika Anda hanya menelurkan panel dengan sshberlari di dalamnya, tetapi jika Anda mengalami masalah lebih sering, mungkin Anda lebih suka menjalankan shell di panel dan memanggil ssh dari sana.

peterph
sumber
Saya membatalkan jawaban Anda, karena itu menambah nilai. Namun inilah mengapa karakter escape tidak selalu merupakan ide yang bagus: menggunakan sesi ssh untuk terhubung ke sesi tmux yang memiliki koneksi ssh terbuka. Kemudian Anda tiba-tiba perlu memikirkan cara mengirim karakter pelarian di luar koneksi ssh pertama untuk mencapai yang dalam. Dan btw, saya biasanya menjalankan ssh dari shell.
0xC0000022L
1
Hampir sama dengan ketika Anda menjalankan sesi tmux bersarang. Entah Anda memiliki karakter pelarian yang berbeda di sesi luar dan dalam (baik ssh atau tmux satu) atau Anda hanya mengirim karakter pelarian dua kali - yang menjadikannya sebagai satu-satunya ke sesi bersarang (perilaku terprogram untuk ssh, dapat dikonfigurasi dalam tmux).
peterph