Sunday, 4 May 2014

tmux revised

Một bài viết nữa về tmux, theo phong cách tìm hiểu bản chất và liệt kê vài câu lệnh hữu ích.

1. Tác giả tác phẩm 
Tác giả: Nicholas Marriott <nicm@users.sourceforge.net>
Các lib tmux depends on : ncurses  libevent
URL            : http://tmux.sourceforge.net/

2. Phân tích cấu tạo, hoạt động 

Các thành phần
session: là 1 tập hợp các pseudo terminal dưới sự quản lý của tmux. Mỗi session link với 1 hoặc nhiều window. Session giữ nguyên trạng thái khi mất kết nối (detach) với client và có thể được reattach.
Mỗi sessions được hiển thị trên màn hình bởi 1 client và tất cả các session được quản lý bởi 1 server duy nhất. Server và client là các process riêng biệt, mỗi client tương tác với server qua một socket được tạo ra trong thư mục /tmp

window: một window sẽ chiếm tòan bộ màn hình và có thể bị chia nhỏ thành nhiều "pane" chữ nhật nhỏ hơn. Mỗi pane là 1 pseudo terminal riêng biệt. Nhiều tmux instance có thể connect vào cùng 1 session, 1 session có thể chứa 1 lượng tùy ý số window


status line: nằm ở dưới của màn hình hiển thị thông tin về session hiện tại và cũng là chỗ để nhập vào các tmux command.
pseudo terminal: Xem man 7 pty để biết thêm về pseudo terminal
pane: những ô chữ nhật nhỏ được tạo thành khi chia nhỏ 1 window.

Hoạt động


Lược dịch từ ``man 1 tmux``
Khi tmux bắt đầu chạy, nó tạo 1 session mới với 1 window và hiển thị window lên màn hình. Khi tát cả các session kết thúc, tmux exit.

3. Các lệnh hữu ích

 tmux --help
usage: tmux [-2lquvV] [-c shell-command] [-f file] [-L socket-name]
            [-S socket-path] [command [flags]]

Người dùng có thể tự đặt tên / path cho socket cho 1 session bằng option -L hoặc -S.

Các câu lệnh có thể gọi theo cú pháp:
# những thứ nằm trong [] là tùy ý, có hay không cũng được.
tmux [command [flags]]

tmux ls # list-sessions - liệt kê các session
tmux lsc # list-clients

hvn@archhvn: ~ () $ tmux lsc
/dev/pts/0: tmuxses [136x36 xterm] (utf8)
/dev/pts/6: 1 [136x36 xterm] (utf8)
hvn@archhvn: ~ () $ tmux ls
1: 3 windows (created Sun May  4 09:14:23 2014) [136x35] (attached)
tmuxses: 5 windows (created Sun May  4 09:13:58 2014) [136x35] (attached)
# attach vào session SESSION_NAME
tmux attach -t <SESSION_NAME>

hvn@archhvn: ~ () $ tmux attach -t tmuxses
 
Hoặc nếu đang sử dụng 1 tmux instance, có thể gõ lệnh qua interactive mode:
Ctrl b + :
rồi gõ lệnh cần gõ => enter.

Liệt kê tất cả các lệnh mà tmux hỗ trợ
tmux lscm
hvn@archhvn: ~ () $ tmux lscm | wc -l
85
=> có 85 command tất cả.