Trong môi trường Linux và Cloud Native, giao diện dòng lệnh (CLI) là công cụ giao tiếp chính của kỹ sư vận hành. Bạn không cần phải nhớ hàng trăm lệnh với hàng nghìn cờ (flags) phức tạp. Một Kỹ sư SRE / Systems Engineer giỏi chỉ cần nắm vững khoảng 20% các lệnh cốt lõi nhưng hiểu sâu cách kết hợp chúng qua đường ống (Pipes |) để xử lý 80% công việc hàng ngày.
🎯 Triết Lý Unix & Tư Duy Dòng Lệnh
"Viết các chương trình làm tốt một việc duy nhất. Viết các chương trình có khả năng phối hợp với nhau." – Doug McIlroy
Mọi câu lệnh cơ bản trên Linux đều tuân theo nguyên tắc:
- Đầu vào chuẩn (stdin) và Đầu ra chuẩn (stdout): Dễ dàng xâu chuỗi kết quả lệnh này làm đầu vào cho lệnh khác qua ký tự pipe
|. - Không có tin tức là tin tốt (Silence is golden): Lệnh chạy thành công thường sẽ im lặng và không in ra gì (exit code = 0). Nếu có thông báo, thường là có lỗi xảy ra.
1. Điều Hướng & Thao Tác Tệp Tin
1.1. Di chuyển và định vị (pwd, cd)
# Xem đường dẫn tuyệt đối thư mục hiện tại
pwd
# Di chuyển về thư mục cá nhân (~/ hoặc /home/username)
cd ~
cd
# 💡 Mẹo chuyên nghiệp: Nhảy nhanh về thư mục vừa đứng trước đó
cd -
1.2. Liệt kê nội dung (ls)
Thay vì chỉ gõ ls đơn thuần, hãy tập thói quen sử dụng các cờ sau:
# Xem chi tiết quyền hạn, chủ sở hữu, dung lượng (dễ đọc: KB, MB, GB) và cả file ẩn
ls -lah
# 💡 Mẹo bắt bệnh: Sắp xếp theo thời gian sửa đổi (mới nhất nằm dưới cùng)
# Cực kỳ hữu dụng khi bạn vừa trigger tác vụ và muốn biết file log nào vừa sinh ra
ls -ltr
1.3. Tạo & Sao chép (mkdir, cp, mv)
# Tạo cây thư mục lồng nhau an toàn (không báo lỗi nếu thư mục đã tồn tại)
mkdir -p /app/backend/config
# Sao chép thư mục kèm giữ nguyên quyền hạn và mốc thời gian (-p hoặc -a)
cp -r -p /etc/nginx /etc/nginx.backup
# Di chuyển hoặc đổi tên file/thư mục
mv old_name.txt new_name.txt
1.4. Xóa tệp tin an toàn (rm)
[!WARNING] Trên Linux không có "Thùng rác" (Recycle Bin). Một khi lệnh
rmđã chạy với quyền root, dữ liệu gần như biến mất vĩnh viễn.
# Xóa file đơn lẻ (có hỏi xác nhận để an toàn)
rm -i config.yaml
# Xóa cả thư mục chứa dữ liệu
rm -rf /tmp/cache_folder
# 🛡️ Quy tắc an toàn: Không bao giờ gõ 'rm -rf /*'.
# Khi cần dọn dẹp thư mục nhạy cảm, hãy cd vào đó rồi mới xóa:
cd /var/log/my-app && rm -f *.log
2. Đọc & Theo Dõi Nội Dung File
2.1. Đọc nhanh & Ghép nối (cat, tac)
cat file.txt: In toàn bộ nội dung ra màn hình (chỉ dùng cho file ngắn).cat -n file.txt: In kèm số dòng.tac file.txt: Đọc ngược từ dòng cuối cùng lên dòng đầu tiên.
2.2. Trích xuất đầu & cuối (head, tail)
# Xem 20 dòng đầu tiên của file
head -n 20 /etc/passwd
# Xem 50 dòng cuối cùng của file log
tail -n 50 /var/log/syslog
2.3. Theo dõi Log thời gian thực (tail -f vs tail -F)
[!TIP] Tại sao kỹ sư SRE luôn dùng
-Fthay vì-f?
tail -f: Theo dõi file dựa trên File Descriptor. Nếu hệ thống tự động quay vòng log (Logrotate) đổi tên file cũ và tạo file mới cùng tên, lệnh sẽ bị dừng lại ở file cũ.tail -F: Theo dõi dựa trên Tên File (File Name). Khi log bị xoay (truncate/recreate), nó sẽ tự động nhận diện và tiếp tục stream file mới mà không bị đứt luồng!
# Luôn dùng -F khi stream log Production
tail -F /var/log/nginx/access.log
2.4. Phân trang tương tác (less)
Khi cần duyệt một file cấu hình hoặc file log nặng hàng trăm MB, đừng bao giờ dùng cat (dễ làm đơ terminal). Hãy dùng less:
- Mở file:
less /var/log/application.log - Điều hướng: Dùng phím mũi tên hoặc
J(xuống) /K(lên). - Tìm kiếm từ khóa: Gõ
/từ_khóarồi nhấnEnter. Nhấnnđể đến kết quả kế tiếp,Nđể quay lại. - Chế độ xem realtime tương tự
tail -f: NhấnShift + F. NhấnCtrl + Cđể thoát chế độ xem live và tiếp tục cuộn ngược xem log cũ. - Thoát ra: Nhấn
q.
3. Lọc & Tìm Kiếm Nâng Cao
3.1. Tìm kiếm văn bản với grep
# Tìm đệ quy từ khóa trong toàn bộ thư mục kèm hiển thị số dòng
grep -rn "database_password" /app/config/
# Tìm không phân biệt chữ hoa/thường (-i)
grep -i "error" /var/log/syslog
# 💡 Mẹo SRE: Đọc file cấu hình sạch sẽ (bỏ toàn bộ chú thích '#' và dòng trống)
grep -vE '^\s*($|#)' /etc/nginx/nginx.conf
3.2. Tìm kiếm tệp tin mạnh mẽ với find
Lệnh find quét trực tiếp vào filesystem metadata, cực kỳ hữu dụng trong vận hành:
# 1. Tìm file cấu hình theo đuôi mở rộng
find /etc -type f -name "*.conf"
# 2. Tìm các file có dung lượng lớn hơn 500MB để giải phóng đĩa
find /var/log -type f -size +500M
# 3. Tìm các file bị chỉnh sửa trong vòng 30 phút qua (hữu ích khi điều tra sự cố/bị hack)
find /var/www/html -type f -mmin -30
# 4. Tìm và xóa file log cũ hơn 7 ngày
find /var/log/app -name "*.log" -type f -mtime +7 -delete
3.3. Định vị nhị phân thực thi (which, whereis, type)
# Tìm đường dẫn file thực thi của lệnh
which nginx
# Kết quả: /usr/sbin/nginx
# Phân biệt lệnh là binary độc lập hay là shell builtin/alias
type cd
# Kết quả: cd is a shell builtin
4. Quản Lý Quyền Hạn & Sở Hữu (Permissions)
Mỗi file trong Linux đều có 3 nhóm quyền: User (u), Group (g), và Others (o). Mỗi quyền tương ứng một giá trị số:
- r (Read): Giá trị
4 - w (Write): Giá trị
2 - x (Execute): Giá trị
1
| Mã số | Quyền hạn | Ý nghĩa thường gặp |
|---|---|---|
755 | rwxr-xr-x | Thư mục chuẩn hoặc Script thực thi (Chủ sở hữu toàn quyền, người khác chỉ đọc/chạy) |
644 | rw-r--r-- | File cấu hình, mã nguồn chuẩn (Chủ sở hữu sửa được, người khác chỉ đọc) |
600 | rw------- | File nhạy cảm, Private Key SSH (id_rsa) – chỉ chủ sở hữu được đọc/ghi |
777 | rwxrwxrwx | ⚠️ Cực kỳ nguy hiểm trên Production – Mọi user đều có quyền sửa/xóa |
# Phân quyền chạy cho file script
chmod +x deploy.sh
# Khóa chặt quyền cho SSH Key
chmod 600 ~/.ssh/id_rsa
# Đổi chủ sở hữu và nhóm sở hữu cho toàn bộ thư mục mã nguồn
sudo chown -R www-data:www-data /var/www/html
5. Nén, Đóng Gói & Truyền Tải Tệp Tin
5.1. Đóng gói & Nén với tar
Quy tắc nhớ cờ nhanh:
- Tạo nén (Create):
c-z-v-f(c: create,z: gzip,v: verbose,f: file) - Giải nén (Extract):
x-z-v-f(x: extract)
# Nén thư mục thành file .tar.gz
tar -czvf backup-app-2026.tar.gz /app/data
# Giải nén vào thư mục chỉ định (-C)
tar -xzvf backup-app-2026.tar.gz -C /opt/restore/
5.2. Đồng bộ tệp tin thần tốc với rsync
[!TIP] Luôn ưu tiên dùng
rsyncthay vìscpkhi sao chép dữ liệu giữa các máy chủ.rsynccó khả năng nén luồng dữ liệu, bảo toàn permissions, và hỗ trợ tiếp tục truyền file nếu bị đứt mạng giữa chừng (Resume).
# Đồng bộ thư mục sang máy chủ khác với các cờ vàng:
# -a: archive (giữ nguyên timestamp, permission)
# -v: verbose (hiển thị chi tiết)
# -z: nén dữ liệu khi truyền qua mạng
# -P: hiển thị tiến trình và cho phép resume nếu mất mạng
rsync -avzP /backup/ user@192.168.1.100:/remote/backup/
5.3. Kiểm tra mạng & API với curl
# Chỉ lấy Header phản hồi từ máy chủ (kiểm tra mã HTTP Status: 200, 301, 502)
curl -I https://api.cloudnative.vn
# Tải script an toàn và thực thi (chỉ dùng với nguồn tin cậy)
curl -fsSL https://get.docker.com -o get-docker.sh
6. Phím Tắt Terminal Tăng 3x Tốc Độ
| Phím tắt | Tác dụng thực chiến |
|---|---|
Ctrl + R | Tìm kiếm ngược lịch sử lệnh (Reverse History Search): Gõ từ khóa để gọi lại lệnh dài từng gõ trong quá khứ |
Ctrl + C | Ngắt và hủy ngay lập tức lệnh đang chạy |
Ctrl + Z | Tạm dừng tiến trình và đẩy vào background (dùng lệnh fg để lấy lại) |
Ctrl + A | Nhảy con trỏ về đầu dòng |
Ctrl + E | Nhảy con trỏ về cuối dòng |
Ctrl + U | Xóa toàn bộ ký tự từ vị trí con trỏ về đầu dòng |
Ctrl + K | Xóa toàn bộ ký tự từ vị trí con trỏ đến hết dòng |
Ctrl + L | Xóa sạch màn hình terminal (tương đương lệnh clear) |
sudo !! | Chạy lại lệnh vừa gõ trước đó nhưng kèm thêm quyền sudo (Cứu nguy khi quên gõ sudo) |
!$ | Lấy lại tham số cuối cùng của lệnh trước đó (Ví dụ: mkdir /very/long/path ➔ cd !$) |
⚡ Bảng Tra Cứu Tóm Tắt (Cheat Sheet)
| Tác vụ | Câu lệnh khuyên dùng |
|---|---|
| Xem thư mục chi tiết theo thời gian | ls -latr |
| Stream log tự động nhận file mới | tail -F /path/to/logfile.log |
| Đọc log nặng không sợ tràn RAM | less /path/to/logfile.log |
| Lọc config bỏ comment và dòng trống | `grep -vE '^\s*($ |
| Tìm file lớn hơn 100MB | find / -type f -size +100M |
| Gán quyền thực thi cho script | chmod +x script.sh |
| Nén thư mục thành tar.gz | tar -czvf name.tar.gz /source/dir |
| Đồng bộ file qua mạng có resume | rsync -avzP source/ user@host:dest/ |
| Kiểm tra HTTP Status code | curl -s -o /dev/null -w "%{http_code}\n" https://domain.com |
Bài tiếp theo đề xuất: Ngôn Ngữ Kịch Bản Shell (Bash) – Làm chủ Shell Scripting chuẩn Production, cờ bảo vệ Strict Mode và kỹ thuật bẫy lỗi với trap.