Linux không chỉ là một hệ điều hành — mà còn là một môi trường linh hoạt đòi hỏi hiểu biết sâu về cơ chế vận hành, từ quản lý tiến trình đến kiểm soát tài nguyên. Dưới đây là tổng quan kỹ thuật tập trung vào các khía cạnh thực tiễn thường gặp trong môi trường sản xuất và phát triển.
Giám sát người dùng và phiên đăng nhập
Khi lệnh top hiển thị 4 phiên nhưng chỉ thấy một người dùng đăng nhập trực tiếp, khả năng cao các phiên còn lại thuộc về kết nối nền như SSH, dịch vụ hệ thống hoặc tiến trình daemon. Các công cụ sau giúp xác minh chi tiết:
who: Liệt kê người dùng đang hoạt động cùng thiết bị đầu cuối và thời điểm đăng nhập.w: Mở rộng thông tin với trạng thái hiện tại, thời gian CPU tiêu thụ và lệnh đang chạy.users: Hiển thị danh sách tên người dùng ngắn gọn, phù hợp cho script tự động hóa.loginctl list-users: Đối với hệ thống sử dụng systemd, cung cấp định danh phiên (session ID), UID và trạng thái.journalctl _UID=1001 -n 20: Truy vấn nhật ký theo UID cụ thể để kiểm tra lịch sử đăng nhập.
Tối ưu dung lượng đĩa
Các lệnh phổ biến để chẩn đoán và giải phóng không gian:
df -hT # Hiển thị phân vùng, hệ tệp và dung lượng khả dụng
ncdu / --exclude=".*cache" # Giao diện tương tác để khám phá thư mục chiếm nhiều dung lượng
find /var/log -name "*.log" -mtime +30 -size +10M -delete # Xóa log cũ >10MB
journalctl --disk-usage # Kiểm tra kích thước journal
journalctl --vacuum-size=200M # Giới hạn journal tối đa 200MB
Đối với hệ thống sử dụng Docker:
docker system prune -a --volumes --filter "until=72h" # Dọn sạch image/container cũ hơn 72 giờ
docker builder prune -f # Dọn cache build
Quản lý tiến trình và tải hệ thống
Chỉ số Load Average phản ánh số tiến trình trung bình đang ở trạng thái Runnable (R) hoặc Uninterruptible Sleep (D) trong khoảng thời gian 1/5/15 phút. Đây KHÔNG phải là phần trăm sử dụng CPU.
Một hệ thống 4 lõi có load average = 8.0 nghĩa là trung bình có 8 tiến trình đang chờ hoặc đang chạy — tức là quá tải ~100% so với khả năng xử lý đồng thời.
Phân tích nhanh bằng:
uptime # Hiển thị load average
ps -eo stat,pid,comm --sort=-time | head -10 # 10 tiến trình tiêu tốn thời gian CPU nhất
pidstat -u 2 5 # Theo dõi %CPU từng tiến trình mỗi 2 giây, 5 lần
Quản lý quyền và bảo mật
Cơ chế phân quyền dựa trên 3 lớp: owner, group, others. Mỗi lớp có 3 bit: read (r), write (w), execute (x).
Các thao tác chính:
chmod 644 file.txt: Đặt quyền đọc/ghi cho chủ sở hữu, chỉ đọc cho nhóm và người khác.chown dev:webadmins /var/www: Gán chủ sở hữu và nhóm cho thư mục.setfacl -m u:backup:r-x /etc/nginx: Thiết lập ACL mở rộng cho người dùngbackup.
Quản lý gói phần mềm
Sự khác biệt giữa hai hệ sinh thái chính:
| Hệ thống | Trình quản lý | Lệnh xóa cấu hình | Lưu trữ cache |
|---|---|---|---|
| Ubuntu/Debian | apt | apt purge nginx | /var/cache/apt/archives/ |
| RHEL/CentOS | dnf | dnf remove --autoremove nginx | /var/cache/dnf/ |
Ghi nhật ký hiệu suất hệ thống
Để thu thập dữ liệu top định kỳ phục vụ phân tích:
# Ghi 3 mẫu cách nhau 10s vào file có dấu thời gian
for i in {1..3}; do echo "=== $(date) ==="; top -b -n1 | head -20; sleep 10; done >> perf.log
# Hoặc dùng cron để ghi hàng giờ
0 * * * * /usr/bin/top -b -n1 >> /var/log/perf-hourly.log 2>&1
Cấu hình mạng nâng cao
Với Netplan trên Ubuntu 22.04+, cấu hình tĩnh được định nghĩa rõ ràng qua YAML:
sudo nano /etc/netplan/01-static.yaml
# Nội dung:
network:
version: 2
ethernets:
eth0:
dhcp4: false
addresses: [192.168.1.100/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 1.1.1.1]
Áp dụng bằng sudo netplan apply. Kiểm tra bằng ip a và ping -c3 8.8.8.8.
Xử lý sự cố thường gặp
- Docker bị masked:
sudo systemctl unmask docker && sudo systemctl enable --now docker - Load cao nhưng CPU idle >90%: Tập trung kiểm tra I/O (
iostat -x 2), network (ss -tuln) hoặc lock contention. - Không phân giải DNS: Kiểm tra
/etc/resolv.conf, đảm bảosystemd-resolvedđang chạy và cấu hình đúng trong/etc/systemd/resolved.conf.