GNU Screen và Tmux: mẹo và thủ thuật


8

Vì vậy, tôi là một fan hâm mộ lớn của các bộ ghép kênh như GNU ScreenTmux , nhưng thậm chí sử dụng Screen trong nhiều năm nay tôi vẫn nhận ra rằng có nhiều điều tôi không biết (và tôi chỉ sử dụng Tmux trong một vài tháng nên nó tệ hơn ).

Những cấu hình và mẹo và thủ thuật bạn sử dụng trên các phần mềm đó (cả hai hoặc trên mỗi phần mềm, không quan trọng)?

Tôi sử dụng cái này làm cấu hình màn hình của mình (tôi nghĩ rằng tôi đã điều chỉnh cái này từ mặc định của Ubuntu screenrc):

shell -$SHELL
startup_message off
defscrollback 1000
hardstatus alwayslastline '%{= wk}%?%-Lw%?%{r}(%{k}%n*%f%t%?(%u)%?%{r})%{k}%?%+Lw%?%?%= %m/%d %C%A'
activity ''
termcapinfo xterm* 'hs:ts=\\E]2;:fs=\\007:ds=\\E]2;screen\\007'

Đó là một cấu hình đơn giản để giữ cho thanh trạng thái hiển thị với một số màu, nhưng tôi chắc chắn rằng có nhiều điều tôi có thể làm với màn hình và Tmux và rất muốn biết điều đó.


zombie qrgiữ cho cửa sổ mở ngay cả khi quá trình đã chết và cho phép qđóng nó hoặc rđể phục hồi quá trình. Hữu ích cho việc xác minh phần mềm.
Ency

Câu trả lời:


4

Điều này có thể hơi đơn giản đối với đám đông này, nhưng tôi thấy thật hữu ích khi thêm phần này vào cuối .profile, để khi tôi đăng nhập từ xa qua ssh, tôi có thể đọc MOTD, sau đó chuyển sang màn hình.

if [ -n "$SSH_TTY" ]
then
        read -p "Press <ENTER> to continue." enterkey
        exec /usr/bin/screen -D -R
fi

3

Tôi có cái này trong .bashrc của tôi. Nếu bạn không chạy màn hình, chức năng này chỉ gọi sshnhư bình thường khi được thực thi. Nếu bạn đang chạy bên trong màn hình (và bạn chưa thay đổi mặc định $TERM), trước tiên, nó sẽ đặt tên cửa sổ thành máy chủ từ xa (cùng với bất kỳ tham số tùy chọn nào). Tôi rất thuận tiện để theo dõi các kết nối từ xa khi bạn có nhiều mở, điều thường xuyên xảy ra trong công việc của chúng tôi.

function ssh () {
if [ $TERM = "screen-bce" ]
    then
    screen -X title "$*" 
    /usr/bin/ssh $*
else
    /usr/bin/ssh $*
fi
}

Tôi cũng sử dụng bind ^A windowlist -bđể dễ dàng truy cập vào danh sách cửa sổ (chỉ cần nhấn ctrl-A hai lần).

Hỗ trợ ssh-agent dễ dàng cho tất cả các cửa sổ:

setenv SSH_AUTH_SOCK $HOME/.screen-ssh-agent
screen 10 ssh-agent -a $SSH_AUTH_SOCK $SHELL

Sau đó, trong bất kỳ cửa sổ nào bạn thực hiện ssh-add chỉ một lần khi bạn bắt đầu một phiên mới.

Cuối cùng, khi gắn vào phiên màn hình từ xa trong phiên màn hình khác, bạn có thể sử dụng screen -x -e ^Vvđể đặt chuỗi điều khiển thành CTRL-V (ví dụ). Điều này tránh việc phải xâu chuỗi CTRL-As để điều khiển phiên từ xa.


0

Bạn có thể xem xét byobu , về cơ bản là một tập hợp của hàng trăm mẹo, thủ thuật, cấu hình, tổ hợp phím, tập lệnh trạng thái và thực tiễn tốt nhất được định hướng xung quanh screentmux.


0

Mặc dù tôi đã bắt đầu sử dụng tmux cho panes, tôi vẫn sử dụng màn hình để ghép các cửa sổ bên trong. tmux được cho là có chức năng này, nhưng việc hoán đổi các ô từ cửa sổ này sang cửa sổ khác không trực quan với tôi, hai người xem tmux đính kèm cũng không thể xem các cửa sổ khác nhau trong cùng một trình nền (hành vi màn hình -x), do đó là giải pháp màn hình trong màn hình. Đây là hai liên kết tmux.conf khiến tôi mất nhiều thời gian nhất để tìm ra và tôi sử dụng hàng ngày.

Đầu tiên, liên kết M (ctrl-b shift-M), bật tắt tmux giữa trình chọn khung chuột và tô sáng / sao chép chuột. Bạn vẫn có thể sao chép / dán trong chế độ chọn khung, nhưng bạn phải giữ shift (và nếu bạn có thói quen đó, sao chép / dán trong bất kỳ ứng dụng nào khác sẽ khiến bạn hơi khổ, hãy để tôi nói cho bạn biết). Macro cũng làm cho nó rõ ràng trực quan chế độ nào hiện đang được chọn.

bind M set mouse-select-pane \; if '[ "`tmux show -v mouse-select-pane`"= "on" ]' "set status-bg cyan \; set pane-active-border-bg cyan" "set status-bg green \; set pane-active-border-bg default"

Cái thứ hai, liên kết CL (ctrl-b ctrl-l), sẽ lấy bất kỳ bố cục nào của 4 tấm và biến nó thành bố cục ưa thích của tôi. Thông thường, tôi sẽ thấy tôi đã nhấn ctrl-d trong một khung mà tôi nghĩ là bên trong màn hình để đóng nó, nhưng thay vào đó không có phiên màn hình và nó đã đóng khung. Vì bố cục của tôi là v-split, h-split, v-split và một số thay đổi kích thước, nếu tôi vô tình đóng bất kỳ cửa sổ cuối cùng nào, nó sẽ trở thành một nỗi đau (không có ý định chơi chữ) để đóng bất kỳ pan trung gian nào giữa cái tôi cần để tạo lại và cuối cùng, sau đó tạo lại và thay đổi kích thước các tấm, và cuối cùng gắn lại bất kỳ phiên màn hình nào mà tôi có thể đã phải tháo ra khi tiêu diệt các tấm. Với macro này, tôi có thể tạo một khung mới, ctrl-b {(liên kết mặc định cho hoán đổi -U) cho đến khi nó trở lại theo đúng thứ tự, sau đó nhấn macro và mọi thứ trở lại bình thường. Bố cục ưa thích của tôi không giống như bố cục của bạn,list-windows lệnh để có được một chuỗi bố trí như dưới đây.

bind C-L select-layout a18e,155x94,0,0[155x18,0,0,6,155x75,0,19{81x75,0,19,31,73x75,82,19[73x22,82,19,32,73x52,82,42,33]}]

Nếu đó là quá ngây thơ cho sở thích của bạn, luôn có tmuxinator để quản lý khung.

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.