tail: inotify không thể được sử dụng, quay trở lại bỏ phiếu: Quá nhiều tệp đang mở


16

Khi tôi cố gắng tail -f catalina.out, tôi nhận được lỗi:

tail: inotify cannot be used, reverting to polling: Too many open files 

Tôi đã thử câu trả lời trong bài đăng này: Quá nhiều tệp đang mở - cách tìm ra thủ phạm

lsof | awk '{ print $2; }' | sort -rn | uniq -c | sort -rn | head

Khi tôi chạy lệnh trên, đầu ra là

17 6115

13 6413

10 6417

10 6415

9 6418

9 6416

9 6414

8 6419

4 9 

4 8

Tôi không thấy bất kỳ quá trình nào có 1024 tệp được mở. Không phải số lượng tệp được mở 17,13,10,10,9? Hay tôi hiểu nó sai? Và tất cả những thứ này là bash, sshd, apache2, tomcat có số 4.

Tôi cũng đã làm lsof | grep tail | wc -l điều đó trở lại 20. Những con số này không lớn, vậy tại sao lại tail -f catalina.outthất bại?

Câu trả lời:


17

Điều này đã được giải quyết cho tôi bằng cách làm theo các hướng dẫn trên http://peter-butkovic.blogspot.com/2013/08/tail-inotify-resource-exhausty.html

Giải pháp vĩnh viễn (được bảo quản trong quá trình khởi động lại) Thêm dòng:

fs.inotify.max_user_watches=1048576

đến:

/etc/sysctl.conf

cố định giá trị giới hạn vĩnh viễn (ngay cả giữa khởi động lại).

sau đó làm một

sysctl -p

1
Tăng mô tả tập tin không giúp tôi. tailTin nhắn của tôi hơi khác một chút : tail: inotify resources exhausted. Câu trả lời này đã giúp tôi. Bạn cũng có thể sử dụng sudo sysctl -w fs.inotify.max_user_watches=1048576 && sysctl -pđể kiểm tra nếu nó giúp mà không sửa đổi vĩnh viễn. Bài đăng này cũng giúp nefaria.com/2014/08/tail-inotify-resource-exhausty
Ruslan Stelmachenko

9

Tôi nghĩ rằng câu trả lời chưa đầy đủ (nó không nói gì về giới hạn tối đa của các tệp được mở trên hệ thống).

Có hai giới hạn về số lượng tệp mở tối đa:

  1. Giới hạn tối đa của các tệp mở cho mỗi quá trình .

    • Bạn có thể xem giá trị nào của giới hạn này bằng cách sử dụng: ulimit -n
    • Bạn có thể thay đổi giới hạn này bằng cách sử dụng: ulimit -n new_limit_number
    • Đây là một lệnh để có được 10 quy trình hàng đầu có nhiều tệp được mở:

      lsof | awk '{ print $2; }' | sort -rn | uniq -c | sort -rn | head
  2. Giới hạn tối đa của tệp mở trên mỗi hệ thống .

    • Bạn có thể xem giá trị nào của giới hạn này bằng cách sử dụng: cat /proc/sys/fs/file-max
    • Bạn có thể thay đổi giới hạn này bằng cách sử dụng: echo new_limit_number > /proc/sys/fs/file-max
    • Đếm tất cả các thẻ xử lý đang mở: lsof | wc -l

6

Rất có thể, bạn đã hết inotifyđồng hồ. Có lẽ, bạn đang chạy một số công cụ đồng bộ hóa tệp (ví dụ Dropbox) trong nền?

Trong Linux, việc thực thi nội bộ của tail -flệnh sử dụng inotifycơ chế theo mặc định, để theo dõi các thay đổi của tệp. Nếu bạn đã hết tất cả inotifyđồng hồ (8192 theo mặc định), thì inotify -fphải chuyển sang bỏ phiếu để phát hiện các thay đổi đối với tệp đó.

Tất nhiên, bạn có thể sửa đổi số lượng inotifyđồng hồ tối đa .

tham khảo:
http://www.quora.com/How-is-tail-f-im
vâyed http://peter-butkovic.blogspot.com/2013/08/tail-inotify-resource-exhausty.html
https: // serverfault.com/questions/510708/tail-inotify-cannot-be-use-reverting-to-polling-too-many-open-files


3

sysctl fs.inotify.max_user_instancessẽ nhận được giới hạn cho mỗi người dùng cho inotify.

Tôi đã trải nghiệm nó và tất cả các hệ thống giới hạn đều đủ cao, nhưng cài đặt theo người dùng thường tương đối thấp theo mặc định, bạn có thể tăng nó vào sysctl.confvà tải lại nó trắng sysctl -p.


3

Chạy

ps aux | grep tail

để kiểm tra xem có quá nhiều lệnh đuôi đang chạy hay không, chẳng hạn như sinh sản bằng crontab.


Điều này thực sự có hiệu quả, theo cách quá nhiều tập tin
Alexander Mills

Làm cách nào để dịch dữ liệu? Bạn có thể giải thích từng phần thông tin có nghĩa là gì và phải làm gì về nó? Ví dụ:root 20161 0.0 0.0 11132 1044 pts/0 S+ 17:27 0:00 grep tail
Christia

Đó chỉ là vấn đề nếu QUÁ NHIỀU quá trình khớp, dòng khớp có chứa "grep" được tạo bởi chính lệnh. Vui lòng sử dụng lệnh "pgrep tail" thay thế.
tangxinfa

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.