thoát khỏi cửa sổ tmux mà không thoát khỏi chương trình Terminal


80

OK tôi mới làm điều này. Tôi đã cài đặt tmuxđể chạy thử nghiệm vài ngày. Sau khi gõ tmux new -s nametôi nhận được một cửa sổ mới với biểu ngữ màu xanh lá cây ở phía dưới. Tôi biên dịch và chạy chương trình java. Bây giờ tôi không biết làm thế nào để thoát khỏi cửa sổ (trong khi để nó chạy). Con trỏ bash (hoặc bất cứ thứ gì) không phản hồi vì chương trình java vẫn đang chạy. Giải pháp của tôi cho đến nay là thoát hoàn toàn chương trình Terminal và mở lại nó. Bạn có ý tưởng nào về cách thoát khỏi cửa sổ tmux mà không thoát khỏi toàn bộ chương trình Terminal không?


2
man tmux | less -p detach
jasonwryan

Câu trả lời:


146

Tách từ phiên hiện tại

Phiên

Ctrl+ b dhoặc Ctrl+b :detach

Màn

Ctrl+ a Ctrl+ dhoặc Ctrl+a :detach


Sau đó, bạn cần chạy tmux attachđể vào lại phiên mở sau khi kết nối lại.
Besi

1
Tôi đã luôn luôn làm ENTER ~ .Điều này có vẻ đẹp hơn.
Thomas Eding

8

Các câu trả lời trước là không đầy đủ, tôi tin. Điều gì :detachlàm là tắt các khung nhìn đang hiển thị hoạt động tmux. Tuy nhiên, bản thân tmux vẫn đang chạy trong nền như bạn có thể thấy bằng cách chạy ps:

myuser 1799 0.0 0.0 2500052 4632 ?? Ss 21Feb16 0:48.39 tmux new-session -s Dev

Trong thực tế, ngay cả khi bạn thoát khỏi thiết bị đầu cuối và khởi động lại, mọi quy trình tmux đều VẪN chạy trong nền.

Để thực sự giết quá trình tmux, bạn phải làm:

tmux kill-session [-t session_name]

hoặc đơn giản:

kill -9 1799


5
Imho, sẽ có ý nghĩa hơn khi bình luận về một số thiếu sót của câu trả lời theo câu trả lời cụ thể đó và để lại bài đăng của bạn dưới dạng câu trả lời đầy đủ và có chứa mà không yêu cầu người đọc tìm ra câu trả lời nào trước đó và sau đó phân tích chúng.
techraf

2
Tôi nghĩ OP đặc biệt muốn quá trình nền (java, trong trường hợp của anh ta) tiếp tục chạy, vì vậy việc giết nó sẽ phản tác dụng. Thú vị hơn là sẽ gắn lại sau với quy trình tách rời với tmux attach-session.
ThomasH

Sử dụng kill -9hoàn toàn là cách sai (tm) để làm điều này. Điều này sẽ gửi một SIGKILLtín hiệu sẽ không cho phép quá trình tự dọn sạch, điều này có thể gây ra vấn đề nghiêm trọng với tài nguyên lơ lửng. SIGKILLchỉ nên được sử dụng khi một quy trình đã được yêu cầu dọn dẹp và tắt thông qua SIGTERMhoặc tương tự và vì bất kỳ lý do gì, từ chối thực hiện; ngay cả sau đó, người ta vẫn nên tránh gửi SIGKILLnếu họ có thể. Câu trả lời này (không chính xác) rằng đó là một trong những điều đầu tiên mà một người nên làm để tắt một quá trình nền như máy chủ tmux.
eestrada
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.