Sử dụng Tmux cho những lần deploy

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ở.

1869ed7b-3683-424f-8b84-aa1b0c78a6eb

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ư ScreenTmux 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.

Chia sẻ bài viết:
Theo dõi
Thông báo của
0 Góp ý
Được bỏ phiếu nhiều nhất
Mới nhất Cũ nhất
Phản hồi nội tuyến
Xem tất cả bình luận