Mở một tệp văn bản và để nó tự cập nhật


20

Làm cách nào tôi có thể mở tệp văn bản và để nó tự cập nhật? Tương tự như cách toplàm việc.

Tôi muốn mở một tệp nhật ký và xem nó tự cập nhật nhanh chóng.

Tôi vừa thử:

$ tail error.log

Nhưng chỉ nhận ra rằng nó chỉ hiển thị cho bạn các dòng trong tệp nhật ký.

Tôi đang sử dụng RHEL 5.10


4
Sử dụngtail -f error.log
garethTheRed

Ah, vậy taillà cách chính xác để sử dụng nó? Ồ, tôi thực sự không nghĩ rằng tôi có thể sử dụng nó. Tôi đã mong đợi một biểu hiện dài hơn nhiều.
Kevdog777

1
FYI, trong khi đuôi công cụ cho công việc, theo nghĩa đen open a text file and let it update itselfcó thể đạt được watch cat filename.
Cthulhu

1
@Cthulhu bạn có nghĩa là watch cat filenamehoặc tương tự. watch filenamesẽ cố gắng thực thi filename.
terdon

@terdon Đúng vậy.
Cthulhu

Câu trả lời:


29

Bạn đang tìm kiếm tail -f error.log(từ man tail):

   -f, --follow[={name|descriptor}]
          output appended data as the file grows; -f, --follow, and --fol‐
          low=descriptor are equivalent

Điều đó sẽ cho phép bạn xem một tập tin và xem bất kỳ thay đổi được thực hiện cho nó.


Và điều này sẽ không sử dụng nhiều tài nguyên?
Kevdog777

1
@ Kevdog777 không thực sự không có. Có lẽ, nó chỉ cần mở lại tệp cứ sau vài giây để cập nhật nó. Đây là cách cổ điển để làm những gì bạn muốn mặc dù.
terdon

1
@terdon, nó chỉ mở lại (có thể mở lại) với -F. Với -fnó chỉ cần đọc mỗi giây. Nó giống như một while cat; do sleep 1; done < file. Xem inotailtrên Linux để biết phần đuôi phản ứng nhiều hơn (sử dụng inotifyđể biết khi nào tệp được sửa đổi).
Stéphane Chazelas

@ StéphaneChazelas: Tôi chắc chắn rằng nó hiệu quả hơn thế nhiều. Tôi cá là nó sử dụng select hoặc poll để xem fd có đọc được không và sau đó ngủ cho đến khi có dữ liệu trên fd. Mặc dù tôi có thể hoàn toàn sai.
Martin York

1
@LokiAstari, bạn không thể làm việc hiệu quả hơn mà readhệ thống gọi mỗi giây. Một "đọc" selecthoặc polltrên một tệp thông thường sẽ luôn trở lại đúng vì read()không bao giờ chặn trên một tệp thông thường, vì vậy sẽ không hoạt động. Phải nói rằng, GNU tailhiện sử dụng inotifytrên Linux, vì vậy inotailkhông còn cần thiết nữa.
Stéphane Chazelas

20

Sử dụng "ít" thay vì "đuôi" để cuộn lại và tìm kiếm

Bạn có thể sử dụng tail -f error.loghoặc, tốt hơn : tail -F error.log.

Nhưng nếu bạn muốn cuộn lại trong tệp, điều đó không hữu ích lắm.

Với

less +F error.log

bạn có được chức năng của tail -f,
nhưng có thể làm gián đoạn việc đọc đầu vào mới bằng Ctrl+ C.

Sau đó, bạn đang ở lesschế độ bình thường ,
nơi bạn có thể cuộn lại để xem những gì bạn có thể đã bỏ lỡ với Up/ Down
Ngoài ra, bạn có thể đọc các dòng tệp nhật ký dài mà không cần gói, sử dụng Left/Right

Tìm kiếm và chỉ hiển thị các dòng khớp

Bạn cũng có thể tìm kiếm các biểu thức thông thường với /, ?cho lùi nNcho tiếp theo / trước.

Rất thú vị cho các tệp nhật ký là bạn có thể ẩn tất cả các dòng không khớp cho tìm kiếm &, chỉ lọc ra các kết quả khớp.

Phím trên dòng lệnh

Với Fbên trong less, bạn tiếp tục các tail -fchế độ -like.
Dòng +lệnh less +Fcó nghĩa là "nhấn các phím này trực tiếp sau khi bắt đầu ít hơn".

Vì vậy, chúng tôi đã sử dụng phím nhấn Fkhi khởi động, được mô tả là:

F  Scroll  forward,  and  keep trying to read when the end of file is
   reached.  Normally this command would be used when already at  the
   end  of the file.  It is a way to monitor the tail of a file which
   is growing while it is being viewed.  (The behavior is similar  to
   the "tail -f" command.)

Xem thêm multitailnếu bạn cần xem nhiều hơn một tệp nhật ký.


Cảm ơn, nhưng tail -f error.loglà hoàn hảo cho những gì tôi cần. Tệp nhật ký chỉ được cập nhật mỗi giờ, do đó, đủ để tôi sử dụng :-)
Kevdog777

1
Hãy nhớ ghi nhớ lần sau;)
Volker Siegel

mostcũng có tail -fchế độ với F.
Stéphane Chazelas

@ StéphaneChazelas đúng, cảm ơn! Hmmm ... tôi nhớ ai đó đã cảm ơn tôi vì đã đề cập mostmột lúc trước ... và tôi đã quên nó.
Volker Siegel

@ StéphaneChazelas Nhưng sau đó, mostdường như không có tính năng lọc ít hơn &để chỉ hiển thị các dòng khớp? Một tính năng hữu ích trong các tệp nhật ký, thường.
Volker Siegel

5

Sử dụng -ftùy chọn với tail:

-f, --follow [= {name | descriptor}] xuất dữ liệu được nối thêm khi tệp phát triển; -f, --follow và --follow = descriptor tương đương

Hoặc sử dụng Flệnh bên trong less:

   F      Scroll forward, and keep trying to read when the end of file is reached.  Normally this command would be used when already at the end of the file.  It is a way to mon‐
          itor the tail of a file which is growing while it is being viewed.  (The behavior is similar to the "tail -f" command.)

Có gì mới trong câu trả lời này?
bluefoggy

1
Tôi không hiểu những gì bạn đang hỏi về. Đó là câu trả lời thứ hai cho câu hỏi này và là câu đầu tiên được đề cập less.
Arkadiusz Drabchot
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.