Đôi khi bạn muốn theo dõi thông tin mới nào đang được ghi vào tệp (hãy nghĩ đến tệp nhật ký) hoặc vì lý do nào đó, muốn truy cập vào một vài dòng cuối cùng của tệp. Vâng, có một tiện ích dòng lệnh cho phép bạn thực hiện việc này trong Linux và nó được gọi là tail.
Trong hướng dẫn này, chúng ta sẽ thảo luận về những điều cơ bản của lệnh tail bằng một số ví dụ dễ hiểu. Nhưng trước khi làm điều đó, cần đề cập rằng tất cả các ví dụ có trong bài viết này đều đã được thử nghiệm trên Ubuntu 16.04 LTS.
tail [OPTION]... [FILE]...
Và đây là những gì trang hướng dẫn của công cụ nói về lệnh này:
Sau đây là một số ví dụ theo kiểu Hỏi & Đáp sẽ giúp bạn hiểu rõ hơn về cách lệnh tail hoạt động.
Sau đây là 10 dòng cuối cùng trong file2 trên hệ thống của tôi:
Ví dụ:
Ví dụ:
Ví dụ:
Lưu ý rằng -f bằng '--follow=name --retry'.
Sau đây là một số thông tin mà trang hướng dẫn liệt kê về các tùy chọn -f/-F/--follow:
Trong hướng dẫn này, chúng ta sẽ thảo luận về những điều cơ bản của lệnh tail bằng một số ví dụ dễ hiểu. Nhưng trước khi làm điều đó, cần đề cập rằng tất cả các ví dụ có trong bài viết này đều đã được thử nghiệm trên Ubuntu 16.04 LTS.
Lệnh tail của Linux
Như đã đề cập, lệnh tail xuất phần cuối cùng của các tệp được cung cấp cho nó dưới dạng đầu vào. Sau đây là cú pháp của lệnh:tail [OPTION]... [FILE]...
Và đây là những gì trang hướng dẫn của công cụ nói về lệnh này:
Mã:
In 10 dòng cuối cùng của mỗi FILE ra đầu ra chuẩn. Với nhiều hơn một FILE, hãy đặt trước mỗi FILE một
tiêu đề cung cấp tên tệp. Nếu không có FILE hoặc khi FILE là -, hãy đọc đầu vào chuẩn.
Câu hỏi 1. Làm thế nào để sử dụng tail?
Cách sử dụng cơ bản rất dễ - tất cả những gì bạn phải làm là truyền tên tệp có 10 dòng cuối cùng mà bạn muốn công cụ hiển thị. Ví dụ:
Mã:
tail file1
Câu hỏi 2. Làm thế nào để thay đổi số dòng in tail?
Như bạn đã biết, lệnh tail in 10 dòng theo mặc định. Tuy nhiên, bạn có thể thay đổi số này bằng tùy chọn dòng lệnh -n.
Mã:
tail -n [num] [filename]
Mã:
tail -n 5 file2
Câu hỏi 3. Làm thế nào để tail xuất ra một số byte nhất định?
Nếu thay vì các dòng, bạn muốn tail xử lý theo byte thì sao. Ý tôi là, nếu yêu cầu là in 20 byte thì sao? Vâng, điều này có thể được thực hiện bằng cách sử dụng tùy chọn dòng lệnh -c.
Mã:
tail -c [num] [filename]
Mã:
tail -c 20 file2
Câu hỏi 4. Làm thế nào để tail theo dõi các tệp nhật ký?
Nếu bạn muốn sử dụng tail để theo dõi các bản cập nhật cho một tệp (ví dụ như tệp nhật ký) theo thời gian thực, hãy sử dụng tùy chọn dòng lệnh -F hoặc --follow.
Mã:
tail -F [tên tệp]
Mã:
tail -F file2
Sau đây là một số thông tin mà trang hướng dẫn liệt kê về các tùy chọn -f/-F/--follow:
Mã:
Với --follow (-f), tail mặc định theo dõi mô tả tệp, nghĩa là ngay cả khi tệp
được tail đổi tên, tail vẫn sẽ tiếp tục theo dõi phần cuối của tệp đó. Hành vi mặc định này không được
mong muốn khi bạn thực sự muốn theo dõi tên thực của tệp chứ không phải mô tả tệp
(ví dụ: xoay vòng nhật ký). Sử dụng --follow=name trong trường hợp đó. Điều đó khiến tail theo dõi tệp được đặt tên theo
cách phù hợp với việc đổi tên, xóa và tạo.
Câu hỏi 5. Làm thế nào để buộc tail tiếp tục cố gắng truy cập tệp đầu vào?
Đôi khi một tệp có thể tạm thời không thể truy cập được, điều này có thể xảy ra do nhiều lý do. Để đảm bảo tail tiếp tục cố gắng mở tệp, hãy sử dụng tùy chọn --retry.
Mã:
tail --retry [filename]