Hướng dẫn này sẽ chỉ cho bạn cách xem nội dung tệp khi nó được cập nhật theo thời gian thực (real-time) bằng lệnh tail trong Linux.
Nếu bạn quản trị máy chủ Linux hoặc là lập trình viên, rất có thể bạn cần theo dõi một tệp để bắt các cập nhật mới – ví dụ: tệp nhật ký (log) của web server để phát hiện lỗi, hoặc tệp dữ liệu đang được ghi liên tục. Thay vì phải nhấn phím tắt làm mới liên tục, hãy dùng tail -f.
Cú pháp cơ bản
Giả sử bạn muốn theo dõi nhật ký truy cập Apache:
# tail -f /var/log/httpd/access.log
Lưu ý: Đường dẫn nhật ký Apache thường là /var/log/httpd/access_log (RHEL/CentOS/Fedora) hoặc /var/log/apache2/access.log (Debian/Ubuntu).
Khi chạy lệnh, bạn sẽ thấy 10 dòng cuối cùng của tệp (mặc định), sau đó con trỏ chờ – mọi dòng mới ghi vào tệp sẽ tự động hiển thị trên màn hình.
Hai nhược điểm của tail -f
- Không thể cuộn lên/xuống: Bạn chỉ xem được luồng dữ liệu mới, không thể cuộn lại lịch sử.
- Ngừng theo dõi khi tệp xoay vòng (log rotation): Khi logrotate di chuyển tệp cũ và tạo tệp mới cùng tên,
tail -fvẫn giữ kết nối với inode của tệp cũ – do đó ngừng hiển thị cập nhật từ tệp mới.
Giải pháp: Dùng tail -F (chữ F in hoa)
# tail -F /var/log/httpd/access.log
Cờ -F (viết tắt của --follow=name --retry) yêu cầu tail theo dõi tên tệp thay vì inode. Khi tệp bị xoay vòng, tail sẽ tự động mở lại tệp mới cùng tên và tiếp tục theo dõi. Tôi khuyến khích luôn dùng -F thay vì -f cho mọi trường hợp theo dõi nhật ký.
Các tùy chọn hữu ích khác
| Tùy chọn | Chức năng |
|---|---|
-n 50 | Hiển thị 50 dòng cuối thay vì mặc định 10 dòng |
-f / -F | Theo dõi thực thời gian (f: theo inode, F: theo tên tệp) |
-q | Không in tiêu đề tên tệp khi theo dõi nhiều tệp |
-s 2 | Ngủ 2 giây giữa các lần kiểm tra (giảm tải CPU) |
Ví dụ thực tế
# Theo dõi 50 dòng cuối nhật ký nginx, chịu đựng log rotation
tail -F -n 50 /var/log/nginx/access.log
# Theo dõi nhiều tệp nhật ký cùng lúc
tail -F /var/log/nginx/access.log /var/log/nginx/error.log
Công cụ nâng cao hơn
- less +F: Mở tệp với
lessrồi nhấn Shift+F – cho phép cuộn lên/xuốngtheo dõi thực tế. - multitail: Theo dõi nhiều tệp trong cửa sổ chia cột, tô màu, lọc regex.
- lnav (Log Navigator): Phân tích định dạng log tự động, truy vấn SQL-like, giao diện TUI đẹp.