Tôi có thể xem những gì đang diễn ra trong phiên tmux mà không đính kèm không?


15

Thường thì tôi sẽ sử dụng tmuxđể bắt đầu một nhiệm vụ sẽ chạy trong một thời gian. Tôi sẽ định kỳ quay lại và kiểm tra nó bằng cách sử dụng tmux -avà sau đó ngắt kết nối nếu nó vẫn chưa hoàn thành và kiểm tra lại sau.

Có cách nào để chỉ xem một ảnh chụp nhanh về những gì đang diễn ra trong phiên mà không đính kèm đầy đủ không? Tôi đang tìm kiếm một cái gì đó giống như trên lý thuyết thực hiện một tailphiên để có được đầu ra cuối cùng (nhưng nếu tôi có thể tránh tạo một tệp khác với một bản sao của đầu ra thì tốt hơn)

Có thể đính kèm và có nó ngay lập tức tách ra cũng sẽ làm việc. Tôi đang cố gắng lưu tổ hợp phím, có lẽ một lệnh như vậy có thể được thực thi từ xa,
nghĩa là ssh root@server tmux --tail?

Câu trả lời:


16

Tôi nghĩ capture-panecó thể phù hợp với nhu cầu của bạn:

tmux capture-pane -pt "$target-pane"

(xem phần mục tiêu của khung hình xếp hình chữ nhật trong trang man để biết cách xác định khung)

Theo mặc định, lệnh đó sẽ kết xuất nội dung hiện tại của khung được chỉ định. Bạn có thể chỉ định một phạm vi các dòng bằng cách sử dụng các tùy chọn -S-E(số dòng bắt đầu và kết thúc): dòng đầu tiên là 0 và các số âm tham chiếu đến các dòng từ lịch sử cuộn ngược lại của lịch sử. Vì vậy, việc thêm -S -10sẽ giúp bạn có mười dòng lịch sử gần đây nhất cộng với nội dung hiện tại của khung.

tmux capture-pane -pt "$target-pane" -S -10

Các -ptùy chọn được thêm vào 1.8. Nếu bạn đang chạy phiên bản cũ hơn thì bạn có thể thực hiện việc này thay thế:

tmux capture-pane -t "$target_pane" \; save-buffer - \; delete-buffer

Nhưng hãy nhớ những dấu chấm phẩy đó nếu bạn đang phát lệnh này sshvì shell từ xa sẽ thêm một mức độ giải thích shell bổ sung (dấu chấm phẩy cần được truyền dưới dạng đối số cho lệnh tmux cuối cùng , chúng không được giải thích bởi cục bộ hoặc từ xa vỏ).


1
Bạn thực sự sở hữu thẻ này ... Câu trả lời tuyệt vời (như thường lệ).
jasonwryan

Người ta cũng có thể thêm -echo thoát ANSI (màu sắc và vân vân). Điều đó tạo nên một kỷ niệm đẹp-pet
cừu bay

1

Không hẳn vậy. Một cách tiếp cận nảy sinh trong tâm trí là bắt đầu quá trình chạy dài của bạn ( $lrp) và sau đó, theo định kỳ, mà không cần đính kèm lại, chạy list-windowscho phiên có liên quan.

Tại một số điểm, tên của cửa sổ tmux với $ lrp sẽ thay đổi trở lại mặc định, nói chung là vỏ của bạn và bạn sẽ có thể thấy $ lrp đã hoàn thành.

┌─[Veles ~]
└─╼ tmux list-windows -t 0
0: App1  (1 panes) [142x51] [layout b27d,142x51,0,0,0] @0
1: SSH  (1 panes) [142x51] [layout b27e,142x51,0,0,1] @1
2: IRC  (1 panes) [142x51] [layout b27f,142x51,0,0,2] @2
3: Shell- (1 panes) [142x51] [layout b280,142x51,0,0,3] @3
4: $lrp* (1 panes) [142x51] [layout b281,142x51,0,0,4] @4 (active)
┌─[Veles ~]
└─╼ tmux list-windows -t 0
0: App1  (1 panes) [142x51] [layout b27d,142x51,0,0,0] @0
1: SSH  (1 panes) [142x51] [layout b27e,142x51,0,0,1] @1
2: IRC  (1 panes) [142x51] [layout b27f,142x51,0,0,2] @2
3: Shell- (1 panes) [142x51] [layout b280,142x51,0,0,3] @3
4: bash* (1 panes) [142x51] [layout b281,142x51,0,0,4] @4 (active)

ý tưởng tốt. Tôi vẫn còn bối rối về $lrpmặc dù - đó có phải là một biến bạn đã đề cập? bạn có thể cho một ví dụ về cách nó sẽ được sử dụng? không thấy $lrpđược liệt kê trongman tmux
cwd

@cwd Đó chỉ là một trình giữ chỗ cho quy trình của bạn (nói rsynchoặc bất cứ điều gì) ... :)
jasonwryan
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.