Làm DevOps, chắc bạn cũng có những đêm phải deploy sản phẩm hay thực hiện một tác vụ chạy rất lâu trên server. Mọi thứ đang suôn sẻ thì đột nhiên… màn hình terminal đứng hình. Mất kết nối SSH. Cảm giác lúc đó thật sự không dễ chịu chút nào, không biết câu lệnh của mình đã chạy xong chưa, có lỗi gì không, và làm sao để kết nối lại đúng phiên làm việc dang dở.

Vấn đề muôn thuở của phiên SSH
Mặc định, khi bạn SSH vào một server và chạy một lệnh nào đó, session đó sẽ gắn chặt với kết nối của bạn. Nếu kết nối mạng của bạn có vấn đề, dù chỉ là rớt mạng trong vài giây, toàn bộ session đó sẽ bị chấm dứt. Mọi tiến trình đang chạy trong terminal đó cũng sẽ bị kill.
Tưởng tượng bạn đang chạy một script migration database mất 30 phút, đến phút 29 thì mạng rớt. Đó thực sự là một thảm họa. Đây chính là lúc các terminal multiplexer như Screen và Tmux tỏa sáng. Chúng tạo ra các session ảo chạy trực tiếp trên server, độc lập hoàn toàn với kết nối SSH của bạn. Bạn có thể ngắt kết nối, đi uống cafe, rồi quay lại và attach vào đúng session đó như chưa hề có cuộc chia ly.
Tmux và Screen
Trong thế giới terminal multiplexer, Screen là một công cụ kỳ cựu, ra đời từ rất lâu và thường được cài đặt sẵn trên nhiều hệ điều hành Linux cũ. Tmux là một lựa chọn hiện đại hơn, mạnh mẽ hơn và có nhiều tính năng tùy biến hơn.
Để dễ hình dung, bạn có thể xem qua bảng so sánh các tính năng chính giữa hai công cụ này mà tôi biết.
Tính năng | Tmux | Screen |
---|---|---|
Multiple Panes & Windows | Có (Dễ dàng split và switch giữa các cửa sổ) | Giới hạn (Chỉ hỗ trợ split cơ bản) |
Persistent Sessions | Có (Reattach bất kỳ lúc nào) | Có (Nhưng ít trực quan hơn) |
Scrollback Buffer | Có (Không bị xóa log) | Không (Scrollback bị reset) |
Multi-User Sharing | Có (Chia sẻ dễ dàng thông qua ACLs) | Có (Nhưng setup khá phức tạp) |
Customization & Plugins | Có (Tùy biến cao, hỗ trợ nhiều plugin) | Không (Chỉ có cấu hình cơ bản) |
Performance & Stability | Nhanh (Quản lý bộ nhớ tốt hơn) | Ổn định (Nhưng tiêu tốn tài nguyên hơn) |
Best Use Case | Phù hợp cho đội ngũ cybersecurity & DevOps hiện đại | Phù hợp cho hệ thống cũ và xử lý nhanh qua SSH |
Từ kinh nghiệm của tôi, Tmux mang lại trải nghiệm làm việc hiệu quả hơn rất nhiều trong các môi trường hiện đại. Khả năng chia một cửa sổ terminal thành nhiều pane để vừa theo dõi log, vừa chạy lệnh, vừa kiểm tra tài nguyên hệ thống.
Làm việc với Tmux
1. Cài đặt Tmux
Tùy vào hệ điều hành của server, bạn có thể dùng trình quản lý gói tương ứng. Ví dụ trên CentOS hoặc RHEL:
sudo yum install tmux -y
Hoặc trên Ubuntu/Debian:
sudo apt-get update && sudo apt-get install tmux -y
2. Tạo, tách và kết nối lại session
Giả sử bạn cần thực hiện một đợt deploy quan trọng, hãy tạo một session có tên để dễ quản lý. Tạo một session mới tên là ‘deploy-prod-app’
tmux new -s deploy-prod-app
Bây giờ, bạn có thể chạy bất kỳ lệnh nào trong session này. Khi cần rời đi, thay vì đóng cửa sổ terminal, bạn hãy detach khỏi session bằng cách nhấn tổ hợp phím Ctrl+b
rồi nhấn phím d
.
Lúc sau, để quay lại đúng phiên làm việc đó, bạn chỉ cần chạy lệnh
tmux a -t deploy-prod-app
Với ‘a’ là viết tắt của ‘attach-session’. Mọi thứ sẽ trở lại y như lúc bạn rời đi.
3. Sức mạnh của việc chia Panes
Đây là tính năng tôi thích nhất ở Tmux. Bạn có thể chia màn hình làm việc thành nhiều ô nhỏ.
Ctrl+b
rồi%
: Chia đôi màn hình theo chiều dọc.Ctrl+b
rồi"
: Chia đôi màn hình theo chiều ngang.
Bạn có thể có một ô để tail -f
file log, một ô để chạy lệnh deploy, và một ô để chạy htop
giám sát hệ thống. Tất cả trong cùng một cửa sổ duy nhất.
4. Tùy biến Tmux cho riêng bạn
Tmux cho phép bạn tùy biến rất nhiều thứ thông qua file ~/.tmux.conf
. Đây là một ví dụ cấu hình cơ bản mà tôi hay dùng:
# Tăng giới hạn lưu trữ lịch sử cuộn lên 20000 dòng
set -g history-limit 20000
# Bật chế độ dùng chuột để cuộn, chọn pane
set -g mouse on
# Đánh số thứ tự window và pane bắt đầu từ 1 thay vì 0
set -g base-index 1
setw -g pane-base-index 1
Sau khi tạo file này, bạn cần load lại cấu hình bằng lệnh tmux source-file ~/.tmux.conf
hoặc thoát hết các session và mở lại.
Vậy khi nào nên dùng cái nào?
Bạn nên chọn Tmux nếu:
- Bạn cần quản lý nhiều tác vụ phức tạp cùng lúc.
- Bạn muốn chia nhỏ màn hình để làm việc đa nhiệm.
- Bạn làm việc trong các môi trường cloud, DevOps hiện đại.
- Bạn thích tùy biến công cụ làm việc của mình.
Screen vẫn có chỗ đứng nếu:
- Bạn chỉ cần một chức năng duy nhất: giữ cho session không bị mất khi rớt mạng.
- Bạn đang làm việc trên một hệ thống Linux rất cũ và tối giản, nơi Screen đã được cài sẵn.
Nói chung, Screen giống như một công cụ cơ bản, đủ dùng. Còn Tmux là một bộ công cụ chuyên nghiệp, giúp bạn nâng cao năng suất rõ rệt.
Trong công việc của một DevOps, sự ổn định và tin cậy là yếu tố sống còn. Mất một phiên SSH giữa chừng không chỉ gây bực bội mà còn có thể dẫn đến những hậu quả nghiêm trọng cho hệ thống. Việc sử dụng thành thạo một terminal multiplexer như Tmux không còn là một lựa chọn, mà nên là một kỹ năng bắt buộc.