Tmux - Một phần mềm nho nhỏ nhưng cực kỳ hữu ích. Lợi ích lớn nhất mà tmux đem lại là cho phép bạn tái truy cập lại một session sau khi kết nối bị mất. Giả sử tình huống như sau: Bạn đang thực hiện một long running action như import file sql có dung lượng lớn, rsync, scp data... Và đột nhiên kết nối ssh bị mất do network nhà bạn gặp trục trặc. Tiến trình import, rsync, scp vẫn hoạt động nhưng bạn không thể thấy nó đang diễn ra như thế nào. Làm cách nào để tái truy cập session đã mất. Tmux chính là thiên thần cứu rỗi bạn trong tình huống đó. Xin bạn chú ý, thiên thần này chỉ giúp bạn nếu bạn nhờ cậy trước khi thực hiện long running action. Nhưng thế cũng là tốt lắm rồi :D
Một điểm nữa tôi thấy tmux khá hấp dẫn là cho phép tạo nhiều window, mỗi window lại cho phép tạo nhiều pane. Tmux sẽ biến terminal của bạn trông rất ngầu. Rất tiện khi bạn dễ dàng thao tác trên nhiều cửa sổ. Tuy vậy, nếu bạn lạm dụng thì chúng lại khiến bạn rối trí.
Giờ thì chúng ta xem tmux thực hiện các phép màu của nó như thế nào
Cài đặt và khởi động
Cài đặt, đơn giản bạn chỉ cần gõ yum install tmux
Khởi động tmux session, cũng đơn giản bạn chỉ cần gõ tmux
Một số câu lệnh cơ bản
Ctrl + b được tmux gọi là bind-key
Ctrl + b " sẽ chia màn hình terminal thành hai nửa theo chiều ngang
Ctrl + b % sẽ chia màn hình terminal thành hai nửa theo chiều dọc
Ctrl +b, giữ và dùng arrow keys để thay đổi kích cỡ của pane
Ctrl + b c tạo một cửa sổ mới
Ctrl + b w danh sách cửa sổ
Ctrl + b n di chuyển đến cửa sổ tiếp theo
Ctrl + b p di chuyển về cửa sổ trước đó.
Ctrl + b [ chuyển vào chế độ copy mode để cho phép bạn copy text trong một window hoặc một pane.
Ctrl + b ? liệt kê tất cả các bind key
Ctrl + b & Kill window, kéo theo toàn bộ các pane trong window đó.
Ctrl + b x Kill pane, xóa một pane trong một window
Ctrl +b d detach tmux session
Các window khi được tạo ra bằng Ctrl + b c sẽ được đánh số từ 0. Bạn có thể dùng Ctrl + c 0 hoặc Ctrl + c 9 để di chuyển đến các window có số tương ứng. Với những window từ 10 bạn sẽ nên đặt tên cho nó để tiện truy cập.
Tái truy cập tmux session
Giờ là phần thú vị nhất của tmux. Tất cả window, pane mà bạn tạo ra nằm trong tmux session. Khi thao tác từ xa trên server bạn bỗng nhiên bị mất kết nối network hoặc có thể bạn nhỡ tay đóng terminal (tương đương với việc bạn detach tmux session), tmux session vẫn nguyên vẹn. Truy cập lại server, bạn chạy lệnh
tmux ls
0: 16 windows (created Sat Feb 6 18:36:47 2016) 80x23
0 là số id cho tmux session. Hiện tại tôi có một tmux session. Trong session đó tôi có 16 windows.
Tôi có thể tái truy cập tmux session này bằng cách:
tmux attach -t 0
Ở đây tôi tái truy cập vào tmux session 0. Bạn có thể có nhiều tmux session trên một máy. Bạn có thể hủy tmux session bằng cách:
tmux kill-session -t session_name hoặc session_id
Một số tiện ích khác
Để thân thiện hơn và cũng dễ quản lý hơn, tôi sẽ đặt lại tên cho tmux session
Ctrl + b : Truy cập vào chế độ command của tmux, tôi gõ rename-session niceday
Khi đó tmux ls
niceday: 16 windows (created Sat Feb 6 18:36:47 2016) 80x23
Và bạn phải tmux attach -t niceday để tái truy cập lại
Nếu muốn đặt tên cho window, bạn có thể dùng ctrl + b ,
Và dùng ctrl +b f để tìm window
tmux cũng thiết kế ngầm một big clock, bạn có thể dùng ctrl + b t để xem đồng hồ :)
Thay đổi tmux bind-key
Mặc định tmux dùng bind-key là Ctrl + b, tôi sẽ thử đổi sang Ctrl + a
vim ~/.tmux.conf
set -g prefix C-a
unbind C-b
bind C-a send-prefix
Bạn phải kill tất cả các tmux session hiện tại. Sau đó, thay đổi bind-key sẽ được áp dụng với các tmux session mới.
Sharing screen dùng tmux
Với hai terminal, cùng một account thì đơn giản chỉ cần hai bước:
Ở terminal thứ nhất
tmux new-sesssion -s shared
Ở terminal thứ hai
tmux attach -t shared
shared không là keyword, bạn có thể dùng bất cứ session-name nào cũng được.
Cả hai terminal khi đó đều nhận keyboard. Để các terminal attach chỉ có quyền xem, bạn dùng
tmux attach -t shared -r
Với hai terminal của hai account khác nhau:
Ở terminal thứ nhất, trong account root
tmux -S /tmp/shareds new -s shared
Tương tự, /tmp/shareds cũng không phải keyword, bạn có thể dùng file có tên bất kỳ.
Tạo user thứ hai: useradd admin
Tạo group chia sẻ: groupadd tmux_shared
Thêm root và admin vào chung tmux_shared:
usermod -a -G tmux_shared root
usermod -a -G tmux_shared admin
Kiểm tra lại:
cat /etc/group | grep tmux
tmux_shared501:root,admin
[admin@localhost ~]$ groups
admin tmux_shared
[root@localhost ~]# groups
root tmux_shared
Dùng quyền quản trị gán quyền group tmux_shared lên /tmp/shareds
chown root:tmux_shared /tmp/shareds
:new<CR> new session
s list sessions
$ name session
Windows (tabs)
c new window
, name window
w list windows
f find window
& kill window
. move window - prompted for a new number
:movew<CR> move window to the next unused number
Panes (splits)
% horizontal split
" vertical split
o swap panes
q show pane numbers
x kill pane
⍽ space - toggle between layouts
Window/pane surgery
:joinp -s :2<CR> move window 2 into a new pane in the current window
:joinp -t :1<CR> move the current pane into a new pane in window 1