Lệnh tail trong Linux dùng để hiển thị phần nội dung cuối của một tệp tin hoặc luồng dữ liệu trên terminal, thường được sử dụng để xem nhanh các dòng log mới nhất hoặc kiểm tra phần kết của tệp văn bản. Bài viết này, được đúc kết từ kinh nghiệm thực chiến nhiều năm làm việc trên môi trường Linux của mình, sẽ cùng bạn tìm hiểu chi tiết về lệnh tail, bao gồm cú pháp, các tùy chọn quan trọng và những ví dụ thực tế giúp theo dõi log, phân tích dữ liệu và xử lý tệp tin hiệu quả hơn.
Những điểm chính
Quan điểm của mình: Trong bối cảnh hệ thống ngày càng phức tạp và dữ liệu log tăng lên theo cấp số nhân, khả năng xem nội dung tệp tin một cách thụ động đã không còn đáp ứng được yêu cầu công việc. Yêu cầu cốt lõi hiện nay là phải có năng lực giám sát và phân tích sự kiện hệ thống theo thời gian thực để phục vụ cho việc gỡ lỗi và vận hành. Do đó, lệnh tail, đặc biệt với các tùy chọn theo dõi (follow), trở thành một công cụ nền tảng và thiết yếu đối với kỹ sư DevOps và quản trị viên hệ thống. Để khai thác tối đa hiệu quả của lệnh tail, cần nắm vững các nội dung chính sau đây:
- Khái niệm: Hiểu rõ lệnh tail là công cụ dùng để hiển thị phần cuối của tệp tin, giúp bạn nhanh chóng kiểm tra nội dung mới nhất hoặc theo dõi log theo thời gian thực.
- Cú pháp lệnh tail: Nắm vững cấu trúc cơ bản của lệnh, bao gồm các tùy chọn và tệp tin, để sử dụng một cách chính xác.
- Các tùy chọn của tail: Nắm vững các tùy chọn quan trọng để tùy chỉnh hiển thị và theo dõi file theo thời gian thực một cách hiệu quả.
- Các ví dụ thực hành: Nắm vững các ví dụ thực tế, giúp bạn áp dụng lệnh tail vào các tình huống công việc hàng ngày như giám sát log hoặc trích xuất dữ liệu một cách linh hoạt.
- Lưu ý quan trọng: Nắm được các lưu ý và các lỗi thường gặp, giúp bạn sử dụng lệnh một cách an toàn, chính xác và tránh các kết quả không mong muốn.
- Câu hỏi thường gặp: Được giải đáp các thắc mắc liên quan đến lệnh tail.
Lệnh tail trong Linux là gì?
Lệnh tail trong Linux là lệnh dùng để hiển thị một số dòng cuối cùng của file hoặc dữ liệu được truyền vào, mặc định là 10 dòng cuối, giúp người dùng tập trung vào phần nội dung mới nhất ở cuối tệp. Bên cạnh khả năng đọc phần cuối file, lệnh tail trong Linux còn hỗ trợ chế độ theo dõi liên tục để cập nhật các dòng mới khi file thay đổi, nên thường được sử dụng trong các tình huống giám sát log hệ thống, log ứng dụng hoặc theo dõi quá trình ghi dữ liệu thời gian thực.

Cú pháp của lệnh tail trong Linux
Cú pháp lệnh tail trong Linux thường được trình bày dưới dạng: tail [options] [file(s)].
Trong đó:
[options]: Các tùy chọn bổ sung như-n,-f,-c,-n +NUMdùng để điều chỉnh cách hiển thị số dòng hoặc cách theo dõi file.[file(s)]: Tên một hoặc nhiều file cần đọc phần cuối nội dung; nếu không chỉ định, lệnh tail sẽ nhận dữ liệu từ stdin (đầu vào chuẩn).
Các tùy chọn thường dùng của lệnh tail trong Linux
Các tùy chọn thường dùng của lệnh tail trong Linux cho phép điều khiển linh hoạt số dòng hiển thị, phạm vi nội dung và cách theo dõi cập nhật của file, đặc biệt hữu ích khi làm việc với log hoặc các tệp văn bản lớn. Bảng dưới đây tổng hợp các tùy chọn quan trọng bám sát cú pháp sử dụng thực tế cùng ý nghĩa chi tiết để thuận tiện áp dụng trong quá trình thao tác:
| Tùy chọn | Tên đầy đủ | Mô tả chi tiết | Ví dụ thực tế |
-f | Follow | Theo dõi nội dung file theo thời gian thực (real-time). Rất hợp để xem log đang chạy. | tail -f access.log |
-n [số] | Number | Xuất ra đúng số dòng chỉ định tính từ cuối file lên (Mặc định không ghi số là 10 dòng). | tail -n 20 error.log |
-n +[số] | Plus Number | Hiển thị tất cả nội dung bắt đầu từ dòng số N cho đến hết file. | tail -n +50 file.txt |
-c [số] | Bytes | Xuất ra số lượng byte cụ thể tính từ cuối file lên thay vì đếm theo dòng. | tail -c 100 file.txt |
-F | Follow (Retry) | Giống -f nhưng vẫn tiếp tục theo dõi nếu file bị xóa và tạo lại (log rotation). | tail -F syslog |
-q | Quiet | Không hiển thị tiêu đề tên file khi bạn xem cùng lúc nhiều file. | tail -q file1.txt file2.txt |
-s [giây] | Sleep interval | Dùng chung với -f để điều chỉnh số giây nghỉ giữa mỗi lần cập nhật dữ liệu mới. | tail -f -s 5 access.log |
Các ví dụ khi thực hành lệnh tail
- Ví dụ 1: Hiển thị mặc định 10 dòng cuối một file
- Ví dụ 2: Hiển thị từ dòng thứ 3 đến cuối file
- Ví dụ 3: Theo dõi sự thay đổi của file bằng tùy chọn -f
Dưới đây là một số ví dụ tiêu biểu bám sát cú pháp thực tế, thể hiện rõ cách sử dụng lệnh tail trong từng trường hợp thường gặp:
Ví dụ 1: Hiển thị mặc định 10 dòng cuối một file
Để xem 10 dòng cuối của một file văn bản khi không cần thêm tùy chọn, bạn có thể sử dụng lệnh sau:
tail countries.txt
Câu lệnh này sẽ in ra 10 dòng cuối cùng của countries.txt, phù hợp khi cần kiểm tra nhanh phần nội dung mới nhất ở cuối file, chẳng hạn log hệ thống hoặc log ứng dụng.
Ví dụ 2: Hiển thị từ dòng thứ 3 đến cuối file
Khi muốn bỏ qua một số dòng đầu và chỉ xem nội dung từ một dòng xác định trở đi, bạn có thể dùng biến thể -n +NUM như sau:
tail -n +3 numbers.txt
Lệnh này sẽ bắt đầu hiển thị nội dung từ dòng thứ 3 đến cuối file, thường được sử dụng khi cần loại bỏ các dòng header hoặc phần mô tả ban đầu để tập trung vào nội dung chính.
Ví dụ 3: Theo dõi sự thay đổi của file bằng tùy chọn -f
Trong trường hợp cần giám sát log theo thời gian thực và muốn xem các dòng mới được ghi thêm vào file, bạn thực hiện lệnh:
tail -f numbers.txt

Lệnh này sẽ hiển thị các dòng cuối hiện có của numbers.txt và tiếp tục cập nhật thêm bất kỳ dòng nào mới được ghi, rất hữu ích khi debug ứng dụng hoặc theo dõi hoạt động dịch vụ trên hệ thống Linux.
Lưu ý khi thực hành lệnh tail
Khi thực hành lệnh tail trong Linux, bạn cần lưu ý một số điểm kỹ thuật để tránh hiểu nhầm kết quả và kiểm soát tốt hơn dữ liệu hiển thị trên terminal:
- Hiểu rõ ý nghĩa của -n, -n +NUM và -NUM: Tùy chọn
-n NUMhoặc rút gọn-NUMdùng để lấy NUM dòng cuối, trong khi-n +NUMlại bắt đầu in từ dòng thứ NUM đến cuối file; việc nhầm lẫn giữa hai dạng này có thể dẫn tới phạm vi nội dung không đúng mong muốn. - Cẩn trọng khi dùng -f với file log lớn hoặc chạy lâu: Khi dùng
tail -fđể theo dõi log thời gian thực, lệnh sẽ chạy liên tục cho đến khi dừng bằng tổ hợp phím nhưCtrl + C, do đó cần chú ý tài nguyên terminal và tránh để phiên theo dõi chạy không cần thiết trong thời gian dài. - Làm việc với nhiều file cần chú ý phần header tên file: Khi tail nhận nhiều file, kết quả sẽ được phân tách bằng các header dạng
==> filename <==, vì vậy cần đọc kỹ tên file đi kèm để không nhầm lẫn nội dung giữa các file khác nhau, đặc biệt khi so sánh log hoặc dữ liệu. - Kết hợp tail với pipe phải kiểm tra kỹ chuỗi lệnh: Khi dùng tail cùng các lệnh khác như
head,grepthông qua pipe, cần chắc chắn về thứ tự lệnh và tham số (ví dụhead -M file | tail -(M-N)), nếu sai thứ tự hoặc tính toán nhầm khoảng dòng sẽ khiến đoạn dữ liệu trích xuất không đúng yêu cầu. - Theo dõi phân quyền và quyền đọc file trước khi dùng tail: Đối với các file log hệ thống hoặc file cấu hình nhạy cảm, cần đảm bảo tài khoản thực thi lệnh tail có quyền đọc file, tránh các lỗi “Permission denied” và không cố gắng truy cập trái phép vào file hệ thống.

Câu hỏi thường gặp
Tùy chọn -f của lệnh tail trong Linux có tác dụng gì
Tùy chọn -f trong lệnh tail của Linux đóng vai trò quan trọng trong việc theo dõi liên tục các thay đổi trong cùng một file. Khi thực thi lệnh, lệnh tail sẽ không chỉ hiển thị các dòng cuối cùng của file mà còn tiếp tục cập nhật và hiển thị thêm bất kỳ dòng nào được ghi vào file.
Có thể kết hợp lệnh tail với các lệnh khác để xử lý dữ liệu đầu ra không?
Làm thế nào để sử dụng tail Linux chỉ hiển thị các dòng chứa từ khóa nhất định trong log?
Bạn có thể kết hợp tail Linux với lệnh grep để chỉ giữ lại các dòng có chứa từ khóa mong muốn, ví dụ: tail -f /var/log/syslog | grep "ERROR" sẽ vừa theo dõi log theo thời gian thực, vừa lọc và hiển thị những dòng có chứa chuỗi “ERROR”, giúp tập trung vào các thông tin quan trọng cần xử lý.
Tail Linux là công cụ không thể thiếu khi làm việc với log hệ thống, file cấu hình và các tệp dữ liệu lớn, nhờ khả năng hiển thị linh hoạt phần cuối nội dung và theo dõi thay đổi theo thời gian thực. Sau khi nắm vững cú pháp, các tùy chọn như -n, -n +NUM, -f và biết cách kết hợp tail Linux với các lệnh khác qua pipe, bạn có thể tối ưu quy trình giám sát, kiểm tra và xử lý dữ liệu trên terminal một cách chủ động và hiệu quả hơn.




