Làm thế nào để chỉ giám sát n dòng cuối cùng của tệp nhật ký?


110

Tôi có một tập tin đăng nhập ngày càng tăng mà tôi muốn hiển thị chỉ 15 dòng cuối cùng. Đây là những gì tôi biết tôi có thể làm:

tail -n 15 -F mylogfile.txt

Khi tệp nhật ký được điền, tailnối các dòng cuối vào màn hình.

Tôi đang tìm kiếm một giải pháp chỉ hiển thị 15 dòng cuối cùng và loại bỏ các dòng trước 15 dòng cuối cùng sau khi nó được cập nhật. Bạn sẽ có một ý tưởng?


28
Thay đổi kích thước cửa sổ đầu cuối của bạn thành 15 dòng.
Jonathan

1
Đó cũng là một điều tốt.
Marc-Olivier Titeux

3
@Jonathan thiên tài!
Marsellus Wallace

Không thể nâng cao nhận xét của jonathan hoặc nó sẽ mất đi hương vị của việc có 15
upvote

Câu trả lời:


151

Nó có thể đủ để sử dụng đồng hồ:

$ xem đuôi -n 15 mylogfile.txt

1
Tuyệt quá! Cảm ơn rất nhiều. Tôi cũng học được lệnh 'xem' trong quá trình này.
Marc-Olivier Titeux

1
Xin lưu ý rằng giải pháp này không hoạt động nếu tệp phát triển hơn 15 dòng giữa hai lần watchcập nhật. Bạn có thể sử dụng -nđể thay đổi khoảng thời gian này.
bfontaine

25

Nếu bạn sử dụng đồng hồ, hãy thử -ntùy chọn để kiểm soát khoảng thời gian giữa mỗi lần cập nhật.

Do đó, sau đây sẽ gọi đuôi mỗi 2 giây

$ watch -n 2 tail -n 15 mylogfile.txt

trong khi cái này thăm dò nó cứ sau 1 giây

$ watch -n 1 tail -n 15 mylogfile.txt

13

Bạn có thể truyền phát tệp logfile chạy ít hơn và nhấn SHIFT + F sẽ truyền phát tệp bằng cách sử dụng ít hơn. $ less mylogfile.txt Sau đó, chỉ cần nhấn SHIFT + F và nó sẽ phát trực tuyến. Tôi nghĩ rằng nó là thuận tiện để theo dõi các tập tin nhật ký cập nhật.


1
Đó là một trong những rất tốt đẹp!
kaiser

8

Có lẽ bạn tìm thấy -dparam tiện dụng.

man watch

-d Làm nổi bật sự khác biệt giữa các bản cập nhật liên tiếp. Tùy chọn sẽ đọc đối số tùy chọn thay đổi tô sáng thành vĩnh viễn, cho phép xem những gì đã thay đổi ít nhất một lần kể từ lần lặp đầu tiên.


1
Bắt tốt quá!
Marc-Olivier Titeux

0

Trong Solaris, AIX hoặc HPUX hoặc UNIX (bao gồm cả Linux), bạn có thể sử dụng tập lệnh để theo dõi nhật ký hoặc bất cứ điều gì tương tự:

while true; 
    clear; 
    do date; 
    echo ;
    echo "MONITORING LOG IN "/path/to/file.log": "; 
    echo "Obs.: Last 20 lines of a logfile:
    echo ;
    tail -20 /path/to/file.log;
    echo ;
sleep 5; 
done
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.