Làm cách nào để tách phiên tmux mà chính nó đã có trong tmux?


118

Tôi đã mở một phiên tmux trên máy cục bộ của mình và ssh cho máy từ xa. Sau này, tôi gõ lệnh "tmux đính kèm" trên máy từ xa, sau đó tôi nhận được một phiên tmux từ xa trên phiên tmux cục bộ của mình.

Bây giờ tôi muốn tách mốt tmux từ xa, tôi đã thử

C-b d

nhưng nó tách ra phiên tmux cục bộ của tôi chứ không phải từ xa.

Làm thế nào tôi có thể tháo rời vmux tmux từ xa?

Câu trả lời:


162
C-b C-b d

(giả sử ràng buộc mặc định)

Cb đầu tiên được giải thích bởi tmux cục bộ của bạn (bởi vì đây là lần đầu tiên nhìn thấy tất cả các tổ hợp phím của bạn). Cb thứ hai là một lệnh khiến tmux cục bộ của bạn gửi Cb đến khung hoạt động của nó; Cb được tạo này đến tmux từ xa . Các d đi qua tmux cục bộ không thay đổi; Khi đến tmux từ xa, nó sẽ kích hoạt detachlệnh.

  1. Bạn gõ Cb . Tmux
    cục bộ của bạn diễn giải nó là khóa tiền tố; không có gì được gửi đến các tiến trình đang chạy theo tmux cục bộ .
  2. Bạn gõ Cb . Tmux
    cục bộ của bạn có nó bị ràng buộc với lệnh. send-prefix
    1. Tmux cục bộ của bạn gửi Cb đến tiến trình đang chạy trong khung hoạt động ( ssh ).
    2. ssh chuyển tiếp nó (thông qua sshd , v.v.) để quá trình chạy trên đầu từ xa ( tmux từ xa ). Tmux
      từ xa của bạn diễn giải nó là khóa tiền tố; không có gì được gửi đến các tiến trình đang chạy dưới tmux từ xa .
  3. Bạn gõ d . Tmux
    cục bộ của bạn chuyển nó qua bình thường (vì Cb thứ hai đã hoàn thành một chuỗi khóa lệnh đầy đủ cho tmux cục bộ ). Tmux từ xa của bạn có nó bị ràng buộc ; nó tách khách hàng đang hoạt động.
    detach-client

Điều này giống như khi bạn cần gửi Cb đến bất kỳ chương trình nào đang chạy bên trong phiên tmux . Nếu bạn muốn gửi Cb đến trình bao thông thường của mình (ví dụ: vì trình bao của bạn đang sử dụng chỉnh sửa kiểu Emacs trong đó Cbbackward-char(và bạn không thích sử dụng các phím mũi tên)), bạn sẽ cần sử dụng Cb Cb để nhận một Cb duy nhất vào trình bao.


8
Ngoài ra, tôi thường thấy việc sử dụng C-a C-ađể nhảy đến cửa sổ hoạt động cuối cùng. Trong hoàn cảnh như vậy hãy cố gắng C-a a dtách ra. Cảm ơn!
mkelley33

2
Lưu ý : combo tôi đề cập ở trên sẽ chỉ khả dụng nếu akhóa bị ràng buộc thay vì btrong tmux.conf của người dùng.
mkelley33

Công cụ tmux bên ngoài của tôi sử dụng C-avà bên trong C-b, và để có thể tách ra khỏi bên trong, điều duy nhất phù hợp với tôi là C-a C-b-b d, nhưng tôi không hiểu tại sao tôi cần thứ haib
Guillem Cucurull

Chỉ cần một lời nhắc để cho phép mọi người kích hoạt tùy chọn này nếu họ không có tổ hợp phím mặc định: bạn có thể chạy :lệnh để chạy lệnh tmux một cách tương tác, sau đó thiết lập liên kết thông qua bind-key -n j send-prefixlệnh. Trong ví dụ này tôi muốn liên kết jđể gửi tiền tố. Mặt khác, sử dụng câu trả lời của Dave: sử dụng tmux detachlệnh.
nealmcb

46

Một cách khác để làm điều đó mà không phải lo lắng về các phím bấm làm cho nó trở thành phiên bản tmux đúng là nhập tmux detachvào phiên tmux từ xa.


8

Tôi đã thử câu trả lời đầu tiên mà không thành công.

Tôi đã có thể nhận được kết quả tôi muốn bằng cách làm như sau:

tmux attach

Tôi vào tmux và thấy phiên khác vẫn được đính kèm

Vì vậy, tôi đã tách phiên làm việc hiện tại của mình để lấy lại trình bao: Ctrl + b; d

Sau đó, tôi đã ban hành như sau: tmux attach -d

Điều này nói để đính kèm vào phiên mặc định và tách tất cả các phiên khác hiện đang được đính kèm. Xem trang người đàn ông dưới Khách hàng và Phiên

phiên đính kèm [-dr] [-t target-session] (bí danh: đính kèm) Nếu chạy từ bên ngoài tmux, hãy tạo một máy khách mới trong thiết bị đầu cuối hiện tại và gắn nó vào phiên đích. Nếu được sử dụng từ bên trong, chuyển đổi máy khách hiện tại. Nếu -d được chỉ định, mọi máy khách khác được đính kèm trong phiên sẽ được tách ra. -r biểu thị máy khách ở chế độ chỉ đọc (chỉ các khóa được ràng buộc với lệnh tách rời-client có hiệu lực)


0

Nếu bạn muốn thử một tùy chọn khác, hãy làm theo các bước dưới đây

  1. tách phiên tmux hiện tại với Ctrl+b d. Vì vậy, bây giờ bạn đi đến dấu nhắc dòng lệnh thiết bị đầu cuối bình thường.
  2. Làm a tmux ls. Tìm phiên hiện đang được đính kèm
  3. Thực hiện lệnh này để tách phiên đã được đính kèm tmux detach-client -s <attached_session_name>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.