Nỗi lo đứt kết nối SSH: Tại sao Multiplexer lại quan trọng
Bất kỳ quản trị viên Linux nào cũng từng gặp tình cảnh này. Bạn đang thực hiện di chuyển cơ sở dữ liệu 100GB kéo dài 45 phút hoặc đang build kernel phức tạp. Đột nhiên, Wi-Fi văn phòng chập chờn trong ba giây. Kết nối SSH bị ngắt, terminal bị treo, và tiến trình bạn vừa chạy “chết” ngay lập tức. Bạn chỉ còn biết nhìn chằm chằm vào dấu nhắc lệnh bị hỏng, tự hỏi liệu dữ liệu có bị lỗi hay script đã kịp chạy xong chưa.
Tmux (Terminal Multiplexer) chính là “gói bảo hiểm” cho những thảm họa này. Nó nằm giữa terminal và shell, tạo ra một môi trường bền bỉ trên máy chủ. Nếu kết nối bị ngắt, session vẫn sẽ duy trì trong bộ nhớ máy chủ. Bạn chỉ cần đăng nhập lại, chạy một lệnh attach nhanh chóng và sẽ thấy con trỏ chuột nằm đúng vị trí cũ.
Nó còn giúp tăng năng suất đáng kể. Thay vì mở 15 tab SSH khác nhau trên máy cục bộ, bạn có thể quản lý mọi thứ trong một cửa sổ duy nhất. Bạn có thể chia màn hình thành bốn pane để vừa xem log, vừa sửa cấu hình, vừa theo dõi CPU cùng lúc. Sau khi quản lý các cụm hơn 50 máy chủ Linux VPS, tôi nhận thấy quy trình làm việc với Tmux là yếu tố giúp tiết kiệm thời gian nhất trong quản trị từ xa.
Cài đặt: Đưa Tmux lên máy chủ của bạn
Tmux cực kỳ nhẹ—file thực thi thường dưới 1MB—và có sẵn trong mọi kho lưu trữ phổ biến. Bạn nên cài đặt nó trên máy chủ từ xa, chứ không chỉ trên máy cục bộ.
Ubuntu / Debian
sudo apt update && sudo apt install tmux -y
RHEL / CentOS / AlmaLinux
sudo dnf install tmux -y
Arch Linux
sudo pacman -S tmux
Kiểm tra phiên bản sau khi cài đặt xong:
tmux -V
Xây dựng cấu hình chuyên nghiệp
Trải nghiệm mặc định của Tmux hơi rườm rà. Ví dụ, phím prefix mặc định là Ctrl+b. Nó thực sự gây mỏi tay và làm chậm tốc độ của bạn. Hầu hết người dùng chuyên nghiệp đều đổi sang Ctrl+a vì dễ bấm bằng ngón út hơn.
Tạo một file cấu hình trong thư mục home để tùy chỉnh thiết lập:
nano ~/.tmux.conf
Dán cấu hình đã sẵn sàng cho môi trường production này vào. Nó bổ sung hỗ trợ chuột, màu sắc đẹp hơn và cách chia pane trực quan hơn:
# Đổi phím prefix từ 'Ctrl+b' thành 'Ctrl+a'
unbind C-b
set-option -g prefix C-a
bind-key C-a send-prefix
# Bật chế độ chuột để cuộn và thay đổi kích thước
set -g mouse on
# Chia pane bằng | và - (dễ hình dung theo chiều dọc/ngang)
bind | split-window -h
bind - split-window -v
unbind '"'
unbind %
# Chuyển pane nhanh bằng Alt + Phím mũi tên (không cần prefix)
bind -n M-Left select-pane -L
bind -n M-Right select-pane -R
bind -n M-Up select-pane -U
bind -n M-Down select-pane -D
# Tinh chỉnh giao diện
set -g default-terminal "screen-256color"
set -g status-bg colour235
set -g status-fg colour136
set -g status-left "#[fg=green]Session: #S #[default]"
Để áp dụng các thay đổi này mà không cần tắt session hiện tại, hãy chạy lệnh này bên trong Tmux:
tmux source-file ~/.tmux.conf
Mẹo nhỏ: Nếu bạn bật mouse on, việc copy văn bản bằng chuột có thể gặp khó khăn. Chỉ cần giữ phím Shift trong khi chọn văn bản để bỏ qua Tmux và sử dụng clipboard của hệ thống cục bộ.
Quản lý Session cho kỹ sư bận rộn
Đừng chỉ chạy lệnh tmux rồi cầu may. Đặt tên cho session là chìa khóa để giữ mọi thứ ngăn nắp khi bạn đang xử lý năm dự án khác nhau cùng lúc.
Khởi tạo Session có tên riêng
# Khởi tạo session để làm việc với Nginx
tmux new -s nginx_config
# Khởi tạo session cho script backup chạy lâu
tmux new -s backup_job
Nếu bị ngắt kết nối, hãy đăng nhập lại máy chủ và liệt kê các session đang chạy:
tmux ls
Để quay lại công việc, hãy sử dụng lệnh attach:
tmux attach -t nginx_config
Bảng phím tắt thiết yếu
Nếu bạn đã sử dụng cấu hình trên, phím prefix của bạn giờ là Ctrl+a. Đây là những phím bạn sẽ dùng trong 90% thời gian:
- Prefix + d: Detach (session vẫn tiếp tục chạy ngầm).
- Prefix + |: Chia màn hình theo chiều dọc.
- Prefix + –: Chia màn hình theo chiều ngang.
- Prefix + c: Mở cửa sổ mới (tab).
- Prefix + x: Đóng pane hiện tại.
Giám sát và Bảo trì
Chạy quá nhiều session có thể làm hệ thống trở nên lộn xộn. Bạn rất dễ để sót hàng tá shell nhàn rỗi đang tiêu tốn bộ nhớ mà không hề hay biết. Tôi khuyên bạn nên duy trì một session “Dashboard” riêng biệt. Tôi thường chia màn hình làm ba: một pane chạy htop để theo dõi RAM, một pane chạy tail -f /var/log/auth.log để theo dõi các lần đăng nhập, và một pane để làm việc trực tiếp.
Để xem chính xác những tiến trình nào đang ẩn bên trong Tmux, hãy dùng lệnh:
ps -ef f | grep tmux
Lệnh này hiển thị dạng cây của mọi tiến trình con. Nếu một session bị treo hoặc bạn chỉ đơn giản là muốn dọn dẹp, bạn có thể tắt nó từ bên ngoài:
tmux kill-session -t backup_job
Chỉ báo trực quan trên thanh trạng thái (Session: #S) là một “cứu cánh”. Nghe có vẻ đơn giản, nhưng nó giúp bạn tránh việc chạy lệnh hủy diệt rm -rf trên session production khi bạn cứ ngỡ mình đang ở staging. Hãy luôn nhìn vào thanh trạng thái đó trước khi nhấn Enter cho một lệnh quan trọng. Tmux biến terminal từ một kết nối mong manh thành một không gian làm việc mạnh mẽ, ngăn nắp, có thể sống sót qua cả những đợt chập chờn mạng tệ nhất.

