Nagle mam problem; wszystkie moje aplikacje i serwer działały dobrze i nagle widzę, że liczba otwartych plików wzrosła.
Sprawdzam to za pomocą tego polecenia:
cat /proc/sys/fs/file-nr
Kiedy to sprawdzam, pokazuje to 44544 0 128000
, więc 44544 to liczba otwartych plików.
Ale kiedy sprawdzę za pomocą tego polecenia - lsof | wc -l
pokazuje - 28384.
Który z nich jest poprawny?
Mój maksymalny limit otwartych plików wynosi 65535
ulimit -a
open files (-n) 65535
Chcę poznać 5 najlepszych procesów, które wykorzystują więcej otwartych plików. Mogę to uzyskać, lsof
ale pokazana tutaj liczba różni się bardzo od innych poleceń, o których wspomniałem powyżej.
Czy mogę uzyskać szczegółowe informacje na temat procesów policzonych przez to polecenie cat /proc/sys/fs/file-nr
?
Zgodnie z poniższym linkiem mówi, że nie możemy, Jak wyświetlić otwarte deskryptory plików, ale nie używając polecenia lsof
Czy jest dla mnie jakieś rozwiązanie? Muszę dowiedzieć się, który proces zaczął nagle korzystać z bardziej otwartych plików.
AKTUALIZACJA Przepraszamy za kłopoty. Znalazłem błąd, który popełniłem, NIE sprawdzałem lsof | wc -l z katalogu głównego. to dlatego widziałem ogromną różnicę.
nadal istnieje różnica między danymi wyjściowymi pliku -nr i lsof | wc -l (z katalogu głównego). lsof count to więcej niż liczba -nr pliku. Powodem tego jest to, że file -nr ignoruje niektóre katalogi (które są uważane przez lsof za pliki). Znalazłem ten powód przez małe badanie samego google. tak czy inaczej! dzięki chłopaki za całą pomoc!
lsof | wc -l
naprawdę pokazuje liczbę ujemną?