Chào anh em! Nếu anh em đang dấn thân vào con đường DevOps, System Administrator (Sysadmin), hay đơn giản là một Web Developer muốn tự tay cấu hình VPS/Server cho dự án của mình, thì việc làm quen với giao diện dòng lệnh (CLI) của Linux là điều bắt buộc. Linux không có những giao diện kéo thả mượt mà như Windows hay macOS (ở phiên bản server), mọi quyền lực tối thượng đều nằm gọn trong các dòng lệnh.
Nhưng giữa hàng ngàn lệnh Linux, đâu là những lệnh thực chiến nhất mà ngày nào anh em cũng phải gõ? Trong bài viết này, mình sẽ cùng anh em mổ xẻ Top 20 lệnh quản trị Linux thông dụng nhất. Không chỉ liệt kê lý thuyết suông, mình sẽ đi kèm ví dụ thực tế và các mẹo nhỏ để anh em áp dụng ngay vào công việc hàng ngày nhé!
1. Nhóm Lệnh Giám Sát Hệ Thống & Tài Nguyên (System Monitoring)
Khi server bỗng dưng chạy chậm, RAM chạm đỉnh hay ổ cứng báo đầy, đây là những lệnh đầu tiên anh em cần “triệu hồi” để chẩn đoán bệnh tình của hệ thống.
1.1. Lệnh top / htop – Xem tiến trình và tài nguyên thời gian thực
Lệnh top là công cụ mặc định trên mọi bản phân phối Linux để xem danh sách các tiến trình đang chạy, lượng CPU và RAM tiêu thụ. Tuy nhiên, giao diện của top hơi đơn điệu. Mình khuyên anh em nên cài đặt và dùng htop để có giao diện trực quan, có màu sắc và dễ tương tác hơn.
# Cài đặt htop (trên Ubuntu/Debian)
sudo apt install htop
# Chạy htop
htop
Với htop, anh em có thể dùng các phím mũi tên để di chuyển, nhấn F6 để sắp xếp theo lượng RAM/CPU tiêu thụ, hoặc nhấn F9 để “kill” một tiến trình cứng đầu ngay lập tức.
1.2. Lệnh free – Kiểm tra dung lượng RAM
Để biết hệ thống còn bao nhiêu RAM trống (Free), đã dùng bao nhiêu (Used) và dung lượng bộ nhớ đệm (Buff/Cache), lệnh free là lựa chọn nhanh nhất.
free -h
Mẹo nhỏ: Thao tác thêm tham số -h (human-readable) sẽ giúp hiển thị đơn vị Gb, Mb cực kỳ dễ đọc thay vì hiển thị một dãy số byte dài ngoằng.
1.3. Lệnh df – Kiểm tra dung lượng ổ đĩa
“Ổ cứng đầy” là một trong những lỗi kinh điển khiến database ngưng hoạt động hoặc website không thể upload file. Hãy dùng lệnh df để kiểm tra dung lượng các phân vùng ổ đĩa.
df -h
Cột Use% sẽ cho anh em biết phân vùng nào đang bị quá tải (ví dụ chạm mốc 95-100% là phải dọn dẹp ngay).
1.4. Lệnh du – Đo lường dung lượng file và thư mục
Sau khi dùng df và biết ổ cứng bị đầy, câu hỏi tiếp theo là: “Thư mục nào đang chiếm nhiều dung lượng nhất?”. Lệnh du (Disk Usage) sẽ giúp anh em tìm ra câu trả lời.
# Tìm 10 thư mục/file nặng nhất trong thư mục hiện tại
du -sh * | sort -rh | head -10
1.5. Lệnh uptime – Xem thời gian hoạt động của Server
Lệnh này cực kỳ đơn giản nhưng hữu ích để kiểm tra xem server đã hoạt động liên tục trong bao lâu, có bao nhiêu user đang login và chỉ số Load Average (mức độ tải của hệ thống trong 1, 5 và 15 phút qua) là bao nhiêu.
uptime
2. Nhóm Lệnh Quản Lý Tiến Trình (Process Management)
Hệ điều hành Linux vận hành dựa trên hàng trăm tiến trình chạy ngầm. Việc kiểm soát và tắt các tiến trình bị treo là kỹ năng sống còn của một sysadmin.
2.1. Lệnh ps – Liệt kê các tiến trình đang chạy
Khác với top chạy liên tục, ps chụp lại “ảnh tĩnh” của các tiến trình tại thời điểm gõ lệnh. Cú pháp phổ biến nhất mà anh em cần nhớ là:
ps aux
Để tìm nhanh một tiến trình cụ thể (ví dụ nginx), anh em kết hợp với lệnh grep:
ps aux | grep nginx
2.2. Lệnh kill & killall – Tiêu diệt tiến trình
Khi một ứng dụng bị treo (ví dụ một script PHP chạy vô hạn), anh em cần lấy PID (Process ID) từ lệnh ps hoặc htop rồi dùng lệnh kill để tắt nó.
# Tắt tiến trình một cách an toàn
kill PID_NUMBER
# Ép buộc tắt ngay lập tức (Force kill)
kill -9 PID_NUMBER
# Tắt tất cả các tiến trình có tên là "nginx"
sudo killall nginx
Cảnh báo: Hãy cực kỳ cẩn thận với tùy chọn
-9(SIGKILL), vì nó không cho phép tiến trình kịp lưu lại dữ liệu đang xử lý dở dang.
2.3. Lệnh lsof – Xem file/port đang bị chiếm dụng
Nhiều khi anh em khởi động lại Nginx hoặc Apache và nhận được thông báo lỗi: “Port 80 already in use”. Lệnh lsof (List Open Files) sẽ chỉ mặt đặt tên ứng dụng nào đang chiếm port đó.
sudo lsof -i :80
3. Nhóm Lệnh Quản Lý Dịch Vụ Hệ Thống (Systemd & Services)
Trên các bản phân phối Linux hiện đại (như CentOS 7/8/9, Ubuntu 16.04 trở lên, Debian), systemd là hệ thống quản lý dịch vụ mặc định.
3.1. Lệnh systemctl – Điều khiển dịch vụ
Đây là lệnh anh em sẽ gõ nhiều nhất khi muốn khởi động, dừng, hoặc cấu hình cho các dịch vụ (Nginx, MySQL, Docker, SSH…) tự động chạy cùng hệ thống.
# Khởi động dịch vụ
sudo systemctl start nginx
# Dừng dịch vụ
sudo systemctl stop nginx
# Khởi động lại dịch vụ (Restart)
sudo systemctl restart nginx
# Kiểm tra trạng thái hoạt động
systemctl status nginx
# Cho phép dịch vụ tự khởi động cùng OS
sudo systemctl enable nginx
# Hủy tự khởi động cùng OS
sudo systemctl disable nginx
3.2. Lệnh journalctl – Xem log hệ thống
Khi một dịch vụ không thể start (báo lỗi “failed”), journalctl là nơi anh em tìm kiếm nguyên nhân cụ thể. Nó thu thập toàn bộ log từ các dịch vụ được quản lý bởi systemd.
# Xem log của dịch vụ nginx
sudo journalctl -u nginx.service
# Xem log thời gian thực (real-time) của hệ thống
sudo journalctl -f
4. Nhóm Lệnh Mạng & Kết Nối (Networking)
Làm việc với server từ xa đồng nghĩa với việc anh em phải liên tục kiểm tra kết nối mạng, kiểm tra port và tải file.
4.1. Lệnh ip – Cấu hình và xem thông tin mạng
Nhiều tài liệu cũ vẫn hướng dẫn dùng lệnh ifconfig, nhưng hiện tại ifconfig đã bị khai tử trên hầu hết các bản phân phối mới. Lệnh ip là sự thay thế hiện đại và mạnh mẽ.
# Xem địa chỉ IP của các card mạng
ip a
# Xem bảng định tuyến (routing table)
ip route
4.2. Lệnh ss – Kiểm tra các kết nối mạng
Tương tự như ifconfig, lệnh netstat cũ kỹ đã được thay thế bằng lệnh ss (Socket Statistics). Lệnh này nhanh và nhẹ hơn rất nhiều.
# Liệt kê tất cả các port đang lắng nghe (listening) dạng số kèm tên tiến trình
sudo ss -tunlp
Giải thích các tham số: -t (TCP), -u (UDP), -n (hiển thị dạng số), -l (đang lắng nghe), -p (hiển thị Process ID/tên chương trình).
4.3. Lệnh curl & wget – Tải file và test API
Cả hai lệnh này đều dùng để tải nội dung từ internet về server thông qua các giao thức HTTP, HTTPS, FTP…
- wget: Phù hợp nhất để tải file trực tiếp từ một đường dẫn.
wget https://example.com/file.zip - curl: Vô cùng mạnh mẽ để test API, gửi request HTTP (GET, POST, PUT…) kèm header.
# Test xem một website có hoạt động không và lấy HTTP Header curl -I https://google.com
5. Nhóm Lệnh Quản Lý File, Phân Quyền & Tìm Kiếm
Thao tác với file và thư mục là công việc diễn ra từng phút khi quản trị Linux.
5.1. Lệnh chmod – Thay đổi quyền truy cập file/thư mục
Linux quản lý bảo mật cực kỳ nghiêm ngặt bằng cơ chế phân quyền: Read (r=4), Write (w=2), Execute (x=1) cho 3 đối tượng: Owner (chủ sở hữu), Group (nhóm), và Others (người dùng khác).
# Cấp toàn quyền (đọc, ghi, thực thi) cho chủ sở hữu, các nhóm khác chỉ được đọc và thực thi
chmod 755 script.sh
# Cấp quyền đọc/ghi cho chủ sở hữu, các nhóm khác không có quyền gì
chmod 600 id_rsa
5.2. Lệnh chown – Thay đổi chủ sở hữu file/thư mục
Khi anh em upload code lên server bằng user root, nhưng webserver (chạy bằng user www-data hoặc nginx) không thể ghi file (lỗi Permission Denied), lúc này anh em cần đổi chủ sở hữu thư mục code.
# Đổi chủ sở hữu thư mục /var/www/html sang user www-data và group www-data
sudo chown -R www-data:www-data /var/www/html
Tham số -R (Recursive) giúp áp dụng quyền này cho toàn bộ thư mục con và file bên trong.
5.3. Lệnh find – Tìm kiếm file/thư mục nâng cao
Nếu anh em quên mất file cấu hình nằm ở đâu hoặc muốn tìm các file log cũ để xóa, lệnh find là một trợ thủ đắc lực.
# Tìm file có tên là "nginx.conf" trên toàn bộ hệ thống
sudo find / -name nginx.conf
# Tìm tất cả các file có đuôi .log trong thư mục /var và nặng hơn 100MB
sudo find /var -name "*.log" -type f -size +100M
5.4. Lệnh grep – Tìm kiếm chuỗi văn bản trong file
grep là một trong những lệnh “quyền lực” nhất Linux. Nó giúp anh em quét qua hàng triệu dòng log để tìm ra một từ khóa cụ thể.
# Tìm từ khóa "error" trong file error.log (không phân biệt chữ hoa chữ thường với -i)
grep -i "error" /var/log/nginx/error.log
# Tìm từ khóa "192.168.1.1" trong tất cả các file thuộc thư mục hiện tại
grep -r "192.168.1.1" .
5.5. Lệnh tail – Xem phần cuối của file
Thay vì mở cả một file log nặng vài GB bằng trình soạn thảo (dễ gây treo server), anh em hãy dùng tail để xem vài dòng cuối cùng.
# Xem 50 dòng cuối cùng của file log
tail -n 50 /var/log/syslog
# Theo dõi log thời gian thực (Real-time log monitoring) - Cực kỳ hữu ích khi debug!
tail -f /var/log/nginx/access.log
5.6. Lệnh tar – Nén và giải nén file
Để sao lưu dữ liệu hoặc chuyển code giữa các server, đóng gói chúng lại dưới dạng file nén .tar.gz là cách tối ưu nhất.
# Nén thư mục thành file .tar.gz
tar -czvf backup-code.tar.gz /var/www/html
# Giải nén file .tar.gz
tar -xzvf backup-code.tar.gz
5.7. Lệnh rsync – Đồng bộ dữ liệu siêu tốc
Lệnh rsync vượt trội hơn cp thông thường vì nó chỉ copy những phần dữ liệu có sự thay đổi (differential backup), giúp tiết kiệm băng thông và thời gian tối đa khi đồng bộ giữa hai server.
# Đồng bộ thư mục từ server cục bộ lên server từ xa qua SSH
rsync -avz -e ssh /data/ user@remote_server:/backup/
6. Mẹo Hay & Best Practices Khi Sử Dụng Lệnh Linux
Để trở thành một sysadmin chuyên nghiệp và tránh những “tai nạn” đáng tiếc (như gõ nhầm lệnh xóa sạch dữ liệu), anh em hãy bỏ túi ngay các nguyên tắc sau:
- Tuyệt đối cẩn thận với lệnh
rm -rf: Lệnh xóa thư mục không thể khôi phục. Trước khi nhấn Enter, hãy kiểm tra kỹ đường dẫn. Đừng bao giờ chạyrm -rf /hoặcrm -rf *khi đang ở thư mục gốc. - Tận dụng phím
Tab: Hãy gõ vài ký tự đầu của lệnh hoặc tên file rồi nhấn phímTabđể hệ thống tự động hoàn thành (Auto-complete). Cách này vừa nhanh vừa tránh gõ sai chính tả. - Sử dụng
aliasđể viết tắt: Nếu có những câu lệnh quá dài phải gõ đi gõ lại, hãy định nghĩa alias trong file~/.bashrchoặc~/.zshrc. Ví dụ:alias ll='ls -la'. - Sử dụng Screen hoặc Tmux: Khi chạy các tác vụ tốn nhiều thời gian (như backup database lớn, tải file nặng), nếu anh em mất kết nối SSH giữa chừng, tiến trình sẽ bị ngắt. Hãy dùng
tmuxhoặcscreenđể tạo các session chạy ngầm an toàn.
Kết Luận
Làm chủ 20 lệnh quản trị Linux thông dụng trên đây là anh em đã nắm giữ đến 80% sức mạnh để vận hành, debug và tối ưu hóa hệ thống server của mình rồi. Hãy thực hành gõ lệnh thường xuyên trên các môi trường lab hoặc VPS cá nhân để biến chúng thành phản xạ tự nhiên nhé.
Chúc anh em làm chủ dòng lệnh Linux thành công! Nếu có câu hỏi hay lệnh nào anh em hay dùng mà chưa có trong danh sách, hãy để lại ý kiến thảo luận nhé!
Các Câu Hỏi Thường Gặp (FAQs)
1. Làm thế nào để chạy một lệnh với quyền Admin (root) trên Linux?
Anh em chỉ cần thêm từ khóa sudo (Superuser Do) vào trước câu lệnh cần thực hiện. Hệ thống sẽ yêu cầu nhập mật khẩu của user hiện tại để xác minh quyền hạn. Ví dụ: sudo systemctl restart nginx.
2. Sự khác biệt giữa lệnh top và htop là gì?
Cả hai đều dùng để giám sát tài nguyên hệ thống. Tuy nhiên, top là công cụ mặc định, giao diện đơn giản và không hỗ trợ chuột. Còn htop có giao diện đồ họa CLI trực quan hơn, hiển thị màu sắc sinh động, hỗ trợ cuộn chuột, tìm kiếm tiến trình nhanh chóng và cần phải cài đặt thêm bằng trình quản lý gói (apt/yum).
3. Tôi lỡ tay xóa file bằng lệnh rm trên Linux, có cách nào khôi phục không?
Rất tiếc là mặc định trên Linux không có “Thùng rác” (Recycle Bin) như Windows khi thao tác qua dòng lệnh. Một khi đã chạy rm, file sẽ bị xóa trực tiếp khỏi ổ đĩa. Mặc dù có một số công cụ khôi phục dữ liệu như testdisk hay extundelete, nhưng tỷ lệ thành công khá thấp và phức tạp. Vì vậy, hãy luôn backup dữ liệu định kỳ.
4. Làm sao để tìm kiếm lịch sử các lệnh tôi đã từng gõ?
Anh em có thể dùng lệnh history để xem danh sách toàn bộ các lệnh đã gõ trước đó. Ngoài ra, một mẹo cực nhanh là nhấn tổ hợp phím Ctrl + R rồi gõ từ khóa của lệnh cũ để tìm kiếm thông minh.