Bagaimana cara melepaskan sesi tmux yang sudah ada dalam tmux?

118

Saya telah membuka sesi tmux di komputer lokal saya, dan ssh ke mesin jarak jauh. Setelah ini, saya mengetik perintah "tmux attach" pada mesin remote, lalu saya mendapat sesi tmux jarak jauh pada sesi tmux lokal saya.

Sekarang saya ingin melepaskan tmux sesstion jarak jauh, saya sudah mencoba

C-b d

tapi itu terlepas sesi tmux lokal saya daripada yang jauh.

Bagaimana saya bisa melepaskan perintah tmux jarak jauh?

superadmin
sumber

Jawaban:

162
C-b C-b d

(dengan asumsi binding standar)

Cb pertama ditafsirkan oleh tmux lokal Anda (karena itu adalah yang pertama untuk melihat semua penekanan tombol Anda). Cb kedua adalah perintah yang menyebabkan tmux lokal Anda mengirim Cb ke panel aktifnya; Cb yang dihasilkan ini tiba di tmux jarak jauh . The d melewati lokal tmux tidak berubah; ketika sampai ke tmux jarak jauh itu memicu detachperintah.

  1. Anda mengetik Cb . Tmux
    lokal Anda mengartikannya sebagai kunci awalan; tidak ada yang dikirim ke proses yang berjalan di bawah tmux lokal .
  2. Anda mengetik Cb . TXux
    lokal Anda telah terikat dengan perintah. send-prefix
    1. Tmux lokal Anda mengirimkan Cb ke proses yang berjalan di panel aktif ( ssh ).
    2. ssh meneruskannya (melalui sshd , dll.) ke proses yang berjalan di ujung jarak jauh ( tmux jarak jauh ).
      Remote tmux Anda menerjemahkannya sebagai kunci awalan; tidak ada yang dikirim ke proses yang berjalan di bawah tmux jarak jauh .
  3. Anda mengetik d . Tmux
    lokal Anda melewatinya secara normal (karena Cb kedua menyelesaikan urutan kunci perintah penuh untuk tmux lokal ). Tmux jarak jauh Anda terikat ; itu melepaskan klien aktif.
    detach-client

Ini sama dengan ketika Anda perlu mengirim Cb ke program apa pun yang berjalan di dalam sesi tmux . Jika Anda ingin mengirim Cb ke shell normal Anda (mis. Karena shell Anda menggunakan pengeditan gaya Emacs di mana Cb berada backward-char(dan Anda tidak suka menggunakan tombol panah)) Anda perlu menggunakan Cb Cb untuk mendapatkan Cb tunggal ke shell.

Chris Johnsen
sumber
8
Atau, saya sering melihat penggunaan C-a C-auntuk melompat ke jendela aktif terakhir. Dalam keadaan seperti itu cobalah C-a a duntuk melepaskan. Terima kasih!
mkelley33
2
Catatan : kombo yang saya sebutkan di atas hanya akan tersedia jika akunci terikat bukan bdi tmux.conf pengguna.
mkelley33
Tmux luar saya menggunakan C-adan yang dalam C-b, dan untuk dapat melepaskan dari dalam satu-satunya hal yang bekerja untuk saya adalah C-a C-b-b d, tetapi saya tidak mengerti mengapa saya membutuhkan yang keduab
Guillem Cucurull
Hanya pengingat untuk memungkinkan orang mengaktifkan opsi ini jika mereka tidak memiliki keybindings default: Anda dapat menjalankan :perintah untuk menjalankan perintah tmux secara interaktif, dan kemudian mengatur pengikatan melalui bind-key -n j send-prefixperintah. Dalam contoh ini saya ingin mengikat juntuk mengirim awalan. Kalau tidak, gunakan jawaban Dave: gunakan tmux detachperintah.
nealmcb
47

Cara lain untuk melakukannya tanpa khawatir tentang keybindings membuatnya ke instance tmux yang tepat adalah mengetikkan tmux detachsesi tmux jarak jauh.

Dave Wongillies
sumber
8

Saya mencoba jawaban pertama tanpa hasil.

Saya bisa mendapatkan hasil yang saya inginkan dengan melakukan hal berikut:

tmux attach

Saya memasuki tmux dan melihat sesi lainnya masih terpasang

Jadi saya melepaskan sesi saya saat ini untuk kembali ke shell: Ctrl + b; d

Lalu saya mengeluarkan yang berikut: tmux attach -d

Ini mengatakan untuk melampirkan sesi default, dan lepaskan semua sesi lain yang saat ini dilampirkan. Lihat halaman manual di bawah Klien dan Sesi

attach-session [-dr] [-t target-session] (alias: attach) Jika dijalankan dari luar tmux, buat klien baru di terminal saat ini dan lampirkan ke sesi target. Jika digunakan dari dalam, alihkan klien saat ini. Jika -d ditentukan, klien lain yang terlampir pada sesi dilepaskan. -r menandakan klien hanya-baca (hanya kunci yang terikat pada perintah detach-client yang berpengaruh)

polisi
sumber
0

Jika Anda ingin mencoba opsi lain, ikuti langkah-langkah di bawah ini

  1. lepaskan sesi tmux saat ini dengan Ctrl+b d. Jadi Anda sekarang Anda pergi ke prompt baris perintah terminal normal.
  2. Lakukan a tmux ls. Cari sesi yang saat ini dilampirkan
  3. Jalankan perintah ini untuk melepaskan sesi yang sudah terlampir tmux detach-client -s <attached_session_name>
Ram
sumber