Giới thiệu cơ bản về Tmux
Tôi bắt đầu dùng Tmux thế nào? Ngày chập chững bắt đầu biết cách ssh vào server, chạy các tác vụ trực tiếp trên staging và production, tôi có gặp một vấn đề như sau. Khi đang chạy một tác vụ chuyển dữ liệu với thời gian thực thi lên tới gần 1 tiếng đồng hồ, đột nhiên tôi gặp thông báo: $ Write ...
Tôi bắt đầu dùng Tmux thế nào?
Ngày chập chững bắt đầu biết cách ssh vào server, chạy các tác vụ trực tiếp trên staging và production, tôi có gặp một vấn đề như sau. Khi đang chạy một tác vụ chuyển dữ liệu với thời gian thực thi lên tới gần 1 tiếng đồng hồ, đột nhiên tôi gặp thông báo:
$ Write failed: Broken pipe
Cái gì vậy?
Thì ra là mạng chập chờn khiến cho kết nối từ máy tính của tôi đến server bị mất. Và thế là tôi bắt đầu bấn loạn! Lo lắng ssh lại, mọi thứ quay lại từ đầu, không biết cái tiến trình đang chạy ban nãy nó thế nào rồi, có xong được không, hay lỗi ở đâu.
Phải có cách nào đó chứ? Nghĩ vậy tôi bắt đầu tìm và nhanh chóng tìm được một cái tên: Tmux. Phải thử ngay!
Sau khi ssh lại vào server và cài tmux, tôi thử chạy:
$ tmux
Màn hình terminal thay đổi về giao diện của tmux session, tôi gõ thử:
$ I am going to run db migration here
và sau đó... rút dây mạng. Tất nhiên, một lần nữa
$ Write failed: Broken pipe
Sau đó tôi ssh lại vào server, gõ thử:
tmux a
Kết quả:
$ I am going to run db migration here
Thật là tuyệt vời, tmux mở lại cho tôi đúng session là tôi đang có trước khi mất mạng. Như chưa hề có cuộc chia ly! Kể từ đó tôi hoàn toàn yên tâm khi phải thực thi những tác vụ kéo dài hàng tiếng, thậm chí là cả ngày trên server.
Tôi đã bắt đầu dùng Tmux như thế đó.
Cụ thể hơn về Tmux
Bên trên là kỷ niệm đầu đời cũng như là giá trị có lẽ là tuyệt vời nhất mà Tmux đem lại cho tôi. Phần này tôi sẽ trình bày kỹ hơn xem thực sự Tmux là cái gì và nó có thể làm được những gì.
Tmux là gì?
Định nghĩa trên trang https://tmux.github.io/ có nói rằng: Tmux là một Terminal Multiplexer - "bộ ghép kênh". Nó cho phép bạn chuyển qua lại giữa các chương trình độc lập ngay trên một terminal, tách các chương trình ra một terminal riêng mà vẫn giữ được trạng thái hoạt động của chúng. Và còn làm được nhiều việc hơn thế nữa...
Cài đặt Tmux thế nào?
Bạn có thể tải và cài tại đây Download hoặc cài trực tiếp từ terminal:
sudo apt-get update sudo apt-get install tmux
Những tính năng hay của Tmux
Đầy đủ tính năng ghi hết ra đây không hết được. Các bạn có thể đọc tại đây hoặc tìm kiếm ở các nguồn khác. Ở đây tôi sẽ chỉ xin phép nêu ra các tính năng cơ bản mà tôi thường sử dụng.
Liên quan đến tạo và attach sessions
Tạo một session mới:
tmux
Attach nó:
tmux a
Tạo một session mới kèm theo tên gọi:
tmux new -s s_name
Attach session đã được đặt tên:
tmux a -t s_name
Hiện thị danh sách các sessions:
tmux ls
Xoá một session:
tmux kill-session -t s_name
Khi đã ở trong tmux
Mặc định của tmux, prefix của các lệnh sẽ là tổ hợp Ctrl+b, cũng giống như gõ Esc để chuyển về chế độ dòng lệnh như Vim vậy.
Các lệnh làm việc với cửa sổCtrl+b c # Tạo một cửa sổ mới Ctrl+b w # Xem danh sách cửa sổ hiện tại Ctrl+b n/p # Chuyển đến cửa sổ tiếp theo hoặc trước đó Ctrl+b f # Tìm kiếm cửa sổ Ctrl+b , # Đặt/Đổi tên cho cửa sổ Ctrl+b & # Đóng cửa sổCách lệnh làm việc với các panel trong 1 cửa sổ
Ctrl+b % # chia đôi màn hình theo chiều dọc Ctrl+b " # chia đôi màn hình theo chiều ngang Ctrl+b o/<phím mũi tên> # Di chuyển giữa các panel Ctrl+b q # Hiện số thứ tự trên Ctrl+b x # Xoá panelNhững thứ khác
Còn rất nhiều những thứ hay ho khác có thể làm trên Tmux, tất nhiên có những thứ có lẽ sẽ chả giúp ích gì mấy cho công việc của bạn. Ví dụ xem giờ trên Terminal, tại sao không?
Tuỳ biến Tmux
Bản thân tôi hài lòng với những thiết lập mặc định của Tmux. Tuy nhiên nếu bạn khó tính, ví dụ cảm thấy prefix Ctrl+b rất là khó dùng chẳng hạn, bạn cũng có thể thay đổi nó. Tạo file .tmux.conf tại thư mục home của user của bạn và bạn có thể config tmux theo ý mình.
tmux source-file .tmux.conf
Ví dụ bạn thích Ctrl+c thay vì Ctrl+b? Chỉ cần viết vào file .tmux.conf mới tạo
unbind C-b set -g prefix C-a
và thế là xong