ít hơn với tập tin cập nhật của Wikipedia


9

Tôi muốn xem một tập tin bị ghi đè cứ sau 5 phút less. Làm cách nào tôi có thể thực hiện lesstheo mô tả tệp mới thay vì giữ hiển thị tệp cũ? watch "cat file"Sẽ không làm điều đó vì tệp quá dài để vừa với một cửa sổ đầu cuối.


2
"Theo dõi" ngụ ý sau khi kết thúc tập tin. Bạn có thể muốn làm rõ rằng tập tin của bạn bị ghi đè và bạn quan tâm đến việc mở lại nó.
chutz

Tôi có nghĩa là theo mô tả tập tin, vì nó được định nghĩa trong tail -ftrang man của. Nhưng tuy nhiên tôi đã làm rõ câu hỏi của mình.
d135-1r43

Sử dụng less --follow-namexem unix.stackexchange.com/a/74287/112522
djsutho

Câu trả lời:


10

Bạn có thể có được hiệu ứng này bằng cách phát Flệnh ( Shift+F) trong khi xem tệp trong less. Để dừng theo dõi và chuyển trở lại phân trang, nhấnCtrl+C

Vì tệp của bạn chỉ thay đổi sau mỗi 5 phút, bạn cũng có thể sử dụng tail -fvà chỉ định thời gian ngủ dài hơn với -s(mặc định là 1 giây). Ví dụ,

tail -f -s 60 myfile

kiểm tra myfileđầu ra cứ sau 60 giây.

EDIT: Do câu hỏi sai lệch, câu trả lời trên không thỏa đáng. Lần thử thứ hai sau:

Để mở lại cùng một tệp trong lessmỗi 5 phút, hãy thử điều này:

while true; do ( sh -c 'sleep 600 && kill $PPID' & less myfile ); done

Điều này sẽ sinh ra một lớp con mà nền tảng của một quá trình shell khác được chỉ dẫn để giết tiến trình mẹ của nó sau 5 phút. Sau đó, nó mở tập tin với less. Khi lệnh shell shell giết chết subshell cha, nó sẽ giết tất cả các con của nó, bao gồm cả lệnh "less". Sau đó, vòng lặp bắt đầu lại quá trình.

Cách dễ dàng duy nhất tôi biết để giết cái này là giết thiết bị đầu cuối mà vỏ ban đầu của bạn đang ở. Nếu không thể chấp nhận được, bạn có thể sử dụng thủ thuật "killfile":

touch killfile
while [ -f killfile]; do stuff; done

Để ngừng làm stuff, rmkillfile trong một shell khác.


Điều này chỉ hữu ích một phần cho trường hợp của tôi. Các tập tin đã xem là rất lớn các thông tin cập nhật ở trên cùng. Nó không phải là tệp nhật ký "cuộn". Shift + F ngay lập tức cuộn đến cuối tập tin ...
d135-1r43

Bạn nên chỉnh sửa câu hỏi của bạn để làm rõ. Tôi cũng chỉnh sửa câu trả lời của mình để trả lời điều này.
bonsaiviking

watch -n 1 less <filename>
axel22

1

Bạn có thể làm một cái gì đó tương tự trong vim.

Bắt đầu phiên máy chủ của vim:

vim -R --servername refresh_session

Sau đó, trong bảng điều khiển khác, theo dõi tệp để cập nhật và báo cho phiên vim tải lại tệp ngay khi được cập nhật:

inotifywait -e close_write -m your_log_file | while read filename events; do
    vim --servername refresh_session --remote $filename
done

Một vài vấn đề.

  • Điều này tất nhiên sẽ không hoạt động nếu bạn vimkhông được biên dịch với clientservertính năng trong.
  • inoifywaitsẽ ngừng hoạt động khi tập tin bị xóa. Vì vậy, tôi hy vọng tập tin của bạn được ghi đè. Tất nhiên, có thể làm việc xung quanh đó.

Và nếu bạn muốn có lesstrải nghiệm giống như vậy hơn , bạn có thể sử dụng các lessmacro để đưa lesscác ràng buộc chính của bạn vào vim.

/usr/share/vim/vim73/macros/less.sh --servername refresh_session

0

Tôi tìm thấy một chương trình "ít" cũ nhưng rất tốt ("máy nhắn tin"). Nó có lệnh "R" để làm mới tập tin.

Nó được gọi là "lv" , Bạn có thể cài đặt nó trên Ubuntu bằng cách sử dụng:

sudo apt install lv

Tuy nhiên, nó dường như không có tính năng tự động tải.



-1

Đuôi là bạn của bạn. "Tên tệp đuôi -f" sẽ hiển thị cho bạn các dòng mới khi chúng xuất hiện.

Hoặc nếu bạn đang tìm kiếm các thay đổi được thực hiện ở giữa tệp, có thể chạy một đoạn script cứ sau vài phút để tạo một bản sao của tệp đến một vị trí tạm thời và làm khác đi?


Nó khá rõ ràng ngay cả trong bài viết gốc rằng có một "tập tin mới". Do đó, bộ mô tả tập tin sẽ thay đổi nhưngtail -f vẫn đọc cái cũ.
Alastair Irvine

Tôi không nghĩ điều đó rất công bằng. Để rõ ràng, chúng ta cần nhìn vào bài đăng gốc, chưa được chỉnh sửa, bởi vì nếu bạn nhìn vào ngày trả lời của tôi, đó là câu hỏi tôi đang trả lời. Trong câu hỏi chưa được chỉnh sửa đó, câu trả lời của tôi có ý nghĩa hoàn hảo.serverfault.com/posts/445899/revutions
David W

Tôi đã kiểm tra các sửa đổi. Từ khóa "tập tin mới".
Alastair Irvine
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.