Làm cách nào tôi có thể xem toàn bộ tệp và cũng chờ thêm dữ liệu được thêm vào tệp đó?


21

Tôi muốn đọc toàn bộ tệp và làm cho nó chờ đầu vào, giống như tail -f nhưng với tệp hoàn chỉnh được hiển thị.

Độ dài của tệp này sẽ luôn thay đổi, vì đây là .logtệp.

Làm thế nào tôi có thể làm điều đó, nếu tôi không biết chiều dài của tập tin?


2
bạn đã biết cái đuôi đó gần với những gì bạn muốn. bạn đã đọc trang người đàn ông cho nó?
njzk2

1
lesscó phím "F". Hữu ích nếu bạn cần tương tác.
Thorbjørn Ravn Andersen

Câu trả lời:


33

tailcho phép bạn thêm -nđể chỉ định số lượng dòng sẽ hiển thị từ cuối, có thể được sử dụng cùng với -f. Nếu đối số -nbắt đầu với +đó là số dòng từ đầu ( 01hiển thị toàn bộ tệp, 2biểu thị bỏ qua dòng đầu tiên, như được chỉ ra bởi @Ben). Vì vậy, chỉ cần làm:

tail -f -n +0 filename

Nếu tệp nhật ký của bạn được xoay, bạn có thể thêm --retry(hoặc kết hợp -f and --retrythành -Fnhư @Hagen đề xuất)

Cũng lưu ý rằng trong một thiết bị đầu cuối đồ họa, bạn có thể sử dụng chuột và PageUp/ PageDownđể cuộn lại lịch sử (giả sử bộ đệm của bạn đủ lớn), thông tin này vẫn ở đó ngay cả khi bạn sử dụng Ctrl+ Cđể thoát tail. Nếu bạn sử dụng lessđiều này sẽ không thuận tiện hơn nhiều và AFAIK bạn phải sử dụng bàn phím để cuộn và tôi không biết một phương tiện nào để tránh bị lesshủy thuật ngữ nếu bạn quên khởi động nó -X.


1
+1 Câu trả lời của bạn xuất hiện ngay sau khi tôi đăng bài của tôi và mặc dù câu trả lời của tôi hoạt động, câu trả lời của bạn tốt hơn.
Julie Pelletier

1
Tôi nhận được tin nhắn trong khi tôi vẫn đang gõ một câu trả lời khác ở đó và tôi nên nhấp để làm mới. Câu trả lời của bạn sẽ hoàn thành công việc, nhưng tôi sẽ không ngạc nhiên khi việc đếm từ đầu (bắt buộc với +) được thực hiện hiệu quả hơn.
Anthon

1
+1đã dạy tôi về +0. Bạn có thể muốn -Fthay vì -fquay logfiles
Hagen von Eitzen

Tôi nghĩ rằng có một off-by-one ở đây. tail -n +1hiển thị phần đầu của tệp cho tôi và tail -n +2bỏ qua một dòng. Tôi nghĩ số này là số dòng của dòng được hiển thị đầu tiên.
Ben Millwood

1
@Anthon cảm ơn! Đây chính xác là những gì tôi cần!
giun sán

37

Có một cách tốt hơn để đạt được điều này:

less +F <file>

Nó sẽ hiển thị cho bạn toàn bộ tệp, có toàn bộ sức mạnh lessvà sẽ chờ đầu vào mới. Nếu bạn muốn dừng chờ đợi đầu vào và đọc một phần cụ thể, bạn có thể dừng nó với ^Cvà tiếp tục với F.

Các Flệnh phải lúc nào cũng có sẵn trong less, nếu bạn quyết định xem các thay đổi trong khi có một tập tin trong mở less, chạm Fsẽ bật tính năng này. Cảm ơn hiergiltdiestfuký tự đại diện đã chỉ ra điều đó.


2
Điều này thực sự tốt hơn nhiều tail. Cảm ơn vì tiền hỗ trợ; Tôi sẽ không bao giờ nghĩ đến việc sử dụng lesscho việc này. Lưu ý cho người khác: Bạn cũng có thể chỉ cần chạy less <file>và sau đó nhập F.
tự đại diện

3

Ngoài câu trả lời của / u / Anthon, bạn có thể làm một số việc như:

{ cat filename; tail -0f filename; }

Đó là -0tùy chọn để đuôi là tương đương với -n 0, có nghĩa là: dispaly 0 dòng. Nhưng -fsẽ hiển thị các dòng mới.

Bạn không cần niềng răng { }. Tôi đã sử dụng chúng bởi vì đôi khi bạn muốn chuyển hướng các nhà làm phim theo một cách nào đó. Ví dụ:

{ cat ; tail -0f -; } < /var/log/messages

Lưu ý bởi Ben Milwood: bạn có thể có một điều kiện cuộc đua trong đó tệp phát triển giữa thời điểm kết thúc cathoạt động và bắt đầu tailhoạt động. Nhưng một lần nữa, đây là một vấn đề "hàn lâm" đối với một giải pháp học thuật.


3
Nếu tệp phát triển giữa khi catkết thúc và tailbắt đầu, bạn sẽ không thấy các dòng đó. Không chắc là một vấn đề lớn, nhưng là một lý do để thích tailgiải pháp thuần túy .
Ben Millwood

Tôi nghĩ rằng { cat; tail -n +0 -f; } < filesẽ khắc phục cuộc đua, bởi vì đuôi sẽ in bất kỳ dữ liệu mới nào xuất hiện giữa catlối ra và tailkhởi động. Tất nhiên, nó làm cho catdư thừa. Việc chuyển hướng chỉ xảy ra một lần và tailstdin là mô tả tệp catđã đọc ra EOF, vì vậy vị trí hiện tại của nó là nơi catdừng lại. Bạn có thể kiểm tra nó bằng cách đặt một echo foo >> filebên trong {}, để tạo ra cuộc đua mọi lúc.
Peter Cordes

2

watch lệnh nên làm điều đó cho bạn.

Bạn cũng có thể thử

less +FG 

Bạn sẽ có nhiều tùy chọn hơn với lesslệnh để cuộn qua tệp của mình khi bạn nói đó là một tệp lớn.


Ít hơn cũng không theo một tập tin đang phát triển.
Shadur

7
@Shadur, có, đó là những gì các +Flựa chọn là cho
glenn jackman
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.