Hiển thị tệp nhật ký tập lệnh Bash ra màn hình liên tục


75

Tôi đang tạo một ứng dụng ghi vào tệp nhật ký và tôi cần biết cách trong Linux / Bash để liên tục hiển thị tệp nhật ký ra màn hình (cập nhật màn hình với mọi dòng mới được đưa vào nhật ký).

Vì vậy, làm ví dụ, giả sử tôi muốn đẩy nhật ký đang chạy apache/error.loglên màn hình (ssh terminal) cập nhật liên tục.


Câu trả lời:


109

Hãy thử lệnh đuôi:

tail -f filename

2
vu tốt bây giờ tôi cảm thấy như một đứa ngốc. Tôi sử dụng lệnh tail mọi lúc, (chỉ không sử dụng với tham số -f). người đàn ông đuôi sẽ là bạn của tôi. Cảm ơn bạn, chính xác những gì tôi đang tìm kiếm !! Sẽ chấp nhận câu trả lời khi nó cho phép (9 phút)
Aaron Murray

vu này thậm chí còn tốt hơn so với viết một kịch bản :) (mặc dù có thể được thêm vào một kịch bản tôi cho rằng cũng)
Aaron Murray

2
với tùy chọn này, --follow=namebạn sẽ chắc chắn giữ nội dung của tệp nhật ký được hiển thị ngay cả khi tệp đã được xoay / tạo lại bằng cron job.
Cédric Julien

2
@aaron Chỉ cần lưu ý vì bạn đã đề cập rằng bạn đang tạo ứng dụng và sau đó dự định chỉnh sửa nhật ký, chỉ cần cẩn thận hiểu rằng chỉ vì bạn đã viết một dòng trong ứng dụng không có nghĩa là dòng đó đã hiển thị trong nhật ký vì đầu ra có thể được đệm.
Frankc

28

Một giải pháp khác là

 less +F filename

hoặc chỉ less filenamevà gõ "F" vào đó (nhấn shift+ f). Nó có thể tốt hơn tail, vì nó cho phép bạn tạm thời hủy in liên tục, quay ngược lại để xem xét thứ gì đó và kích hoạt lại nó bằng "F" ( shift+ f)


Tôi đang ghi chú, đó là một sự thay thế tuyệt vời!
Aaron Murray

Thêm vào đó, nó có thể cắt bớt các dòng dài ra khỏi ô cho bạn với -Scờ, đồng thời cho phép bạn cuộn sang trái / phải qua chúng. Vượt trội so với tail -f file.log | cut ...phương pháp.
sevko

Tôi không hiểu tổ hợp phím. Đầu tiên nhấn Fsau đó Shift? Hoặc nhấn chúng đồng thời? Tôi đã thử nhưng không có gì khác biệt.
becko

1
becko, cảm ơn bạn, chỉ cần gõ "F" (Shift + F) - nhấn và giữ Shift, sau đó nhấn f, sau đó thả cả hai phím. Đã chỉnh sửa câu trả lời của tôi.
osgx

11

Lệnh đồng hồ cũng có thể được sử dụng.

watch tail logfile

Sẽ hiển thị cho bạn 5 dòng cuối cùng của tệp nhật ký. Nó có thể được mở rộng cho bất kỳ lệnh nào in nội dung ra stdout.

Có, sử dụng tail -flà giải pháp truyền thống, nhưng tùy thuộc vào những gì bạn đang cố gắng làm, điều này có thể hoạt động tốt hơn.


1
thêm ghi chú. Linux = một triệu cách để lột da cùng một con mèo :) cảm ơn bạn
Aaron Murray

6

ssh {remotehost} tail -n0f {logfile}

Điều này sẽ cung cấp cho bạn 0 dòng ban đầu và liên tục in bất kỳ dòng mới nào xuất hiện trong tệp.


6

Bạn cũng có thể:

less filename.txt
and press 'F'

có một điểm cộng - bạn có thể CTRL-C bất cứ lúc nào và cuộn lại trong nhật ký và bắt đầu xem lại bằng chữ 'F'.


1
Tôi rất ngạc nhiên về thời gian trả lời của các câu hỏi, tôi đã thử trả lời một vài câu hỏi và có nhiều người nhanh hơn trên nút làm mới xung quanh đây hơn tôi :) Cảm ơn câu trả lời / mẹo nữa
Aaron Murray
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.