Làm thế nào để tôi bớt tên tệp hơn là số inode?


11

Tôi có một phần mềm xoay các tệp nhật ký của nó khi khởi động lại. Tuy nhiên, trong quá trình phát triển, tôi đang khởi động lại nó rất nhiều, vì vậy tôi muốn theo dõi tệp nhật ký mới nhất bất cứ lúc nào.

Nếu tôi bắt đầu lessbình thường với less program.logvà nhấn Shift+ fđến đuôi, khi tệp nhật ký được xoay, tôi tiếp tục theo dõi tệp nhật ký cũ. Tôi giả sử điều này là do số inode giữ nguyên và lesscó một tệp xử lý mở đối với inode đó.

Có thể theo dõi hoạt động mới nhất trên bất kỳ tệp nhật ký nào hiện đang được gọi program.logkhông?

Cụ thể, tôi đang làm việc trên Sun OS, vì vậy một giải pháp hoạt động ở đó sẽ rất lý tưởng.


có thể tail -F program.log | lesssẽ hoạt động
sendmoreinfo

tail -f program.log bạn đã thử cái này chưa
Rahul Patil

Câu trả lời:


17

Sử dụng less --follow-namenếu phiên bản lesshỗ trợ của bạn. Tùy chọn đó đã được giới thiệu trong phiên bản 416.


Trả lời tuyệt vời. Cả Solaris 10 và Solaris 11 đều sử dụng ít phiên bản 436 hơn nên tùy chọn này thực sự có sẵn.
unixhacker2010

5

Các lesstùy chọn --follow-namechỉ là một phần của giải pháp;
Để thay thế tail -F, một đối số khác là cần thiết:

less --follow-name +F file.log

Tùy chọn một mình như less --follow-name file.logkhông thực sự bắt đầu sau khi cập nhật tệp. Bạn cần vào chế độ theo dõi được nhấn ShiftF.
(Thoát khỏi chế độ để điều hướng theo ControlC.)

Thay vì theo dõi tệp, --follow-name sửa đổi hành vi của ít hơn.
Nó làm cho khóa lệnh ShiftFbên trong lessfollow dựa trên tên tệp chứ không phải mô tả tệp.

Ngoài ra, không có tùy chọn bình thường để bắt đầu lesstrong chế độ theo dõi.
Nhưng bạn có thể sử dụng dòng lệnh để đưa ra tổ hợp phím để thực thi sau khi khởi động, bằng cách thêm tiền tố vào chúng +.
Kết hợp tùy chọn sửa đổi với +F, lessthực sự sẽ bắt đầu trong chế độ theo (sửa đổi).

Sử dụng +Fmột mình cho tương đương với đồng bằng tail -f:

less +F file.log

1

Tôi vừa tìm thấy câu trả lời trong Hỏi & Đáp về U & L này có tiêu đề: Làm thế nào để thực hiện một tail -ftệp xoay vòng nhật ký? .

Sử dụng tail:

(nếu cài đặt GNU GNU trên hệ thống của bạn là một tùy chọn)

tail -F program.log

Từ trang người đàn ông đuôi :

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

   -F       same as --follow=name --retry

   --retry  keep  trying  to  open  a  file even when it is or becomes
            inaccessible; useful when following by name, i.e., with
            --follow=name

Chìa khóa là công --retrytắc. Điều này cho biết taillệnh tiếp tục thử lại để theo dõi một tệp theo tên. Công -Ftắc hiện cả a -fvà a --retry.

Sử dụng less

Như @StephaneChazela đã chỉ ra trong các bình luận sau đây sẽ không hoạt động.

tail -F program.log | less

Tùy chọn khác duy nhất bạn có là sử dụng ít trực tiếp giả sử nó hỗ trợ --follow-namechuyển đổi và lesstệp trực tiếp, từ bỏ tailhoàn toàn sử dụng .

less --follow-name program.log

Đôi khi tôi rất không thích Sun OS ...
Alex Chamberlain

Tôi đồng ý, tôi đã làm việc trong nhiều năm, điều đó thúc đẩy bạn rằng công cụ này giống như 10 năm đối với một số ứng dụng. Làm cho không có ý nghĩa. Trang web này là vô giá để giữ sự tỉnh táo của bạn trên Solaris: sunfreeware.com/int sinhtion.html
slm

nếu bạn muốn tỉnh táo hơn, hãy xem pkgsrc.org :)
sendmoreinfo

Điều đó sẽ không làm việc tốt. Bởi vì lesssẽ treo nếu bạn làm "G" pr "F". Mà bạn có thể làm gián đoạn bằng cách thực hiện "Ctrl-C", nhưng sau đó nó sẽ giết đuôi. Sau đó, bạn có thể miễn dịch với Ctrl-C, nhưng nó vẫn không sử dụng được.
Stéphane Chazelas

Liên quan đến đuôi GNU: Kiểm tra thông tin này để biết thông tin về những công cụ nào sẽ có trên bất kỳ máy chủ Solaris nào. (Trên thực tế, đuôi GNU có ở đó trong Solaris 11). Các sysadins của Solaris thường gây khó khăn hơn cho người dùng của họ vì họ để cài đặt ở cài đặt rất đơn giản trong khi các công cụ GNU cho Solaris thực sự có sẵn trực tiếp từ Oracle hoặc trong một số trường hợp là một phần của cài đặt mặc định. Không có lý do để không làm cho nó một phần của cài đặt của bạn. Không có lý do để đi đến repos 'không chính thức'. Xem liên kết.
unixhacker2010
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.