Linux Napraw błąd „zbyt wiele otwartych plików”

Linux Napraw błąd „zbyt wiele otwartych plików”

Ten samouczek wyjaśnia, jak rozwiązać błąd „zbyt wiele otwartych plików”.

Po przeczytaniu tego artykułu zrozumiesz przyczynę błędu, który otrzymujesz i będziesz wiedział, jak to naprawić. Nauczysz się nie tylko naprawić błąd, ale także inne ważne aspekty procesów plików systemu OS Linux.

Znaczenie błędu „zbyt wiele otwartych plików”

Gdy użytkownik wykonuje proces, proces ma powiązane pliki zawierające informacje o użyciu pliku. Na przykład deskryptory plików mogą poinformować jądro, jak uzyskać dostęp do pliku lub jak obsłużyć go do innego zasobu. Na przykład, gdy używamy rury do przekierowania procesu do innego.

Domyślnie każdy proces wykonany w systemie Linux ma co najmniej 3 powiązane pliki o nazwie Deskryptory pliku: Stdin, stdout i stderr. Ich funkcja jest pokazana w poniższej tabeli.

Deskryptor pliku Numer Funkcjonować
Stdin 0 Odnosi się do metody wprowadzania klawiatury
Stdout 1 Wydrukuje lub przekierowuje wyjście, odnosi się do ekranu
Stderr 2 Wydrukuje lub przekierowuje błędy, odnosi się do ekranu

Istnieje limit deskryptorów plików użytkowników i procesów, które można wykonywać jednocześnie. Po osiągnięciu limitu i użytkownika lub procesu próbuje otworzyć dodatkowe deskryptory plików, otrzymujemy „Zbyt wiele błędów otwartych plików".

Dlatego rozwiązaniem tego błędu jest zwiększenie limitu deskryptorów plików, które użytkownik lub proces może otworzyć.

Naprawienie błędu Linux „zbyt wiele otwartych plików”

Aby sprawdzić limit plików deskryptora dla bieżącej sesji, uruchom polecenie pokazane poniżej.

Ulimit -n

Jak widać powyżej, limit wynosi 1024.

Teraz sprawdźmy limit użytkownika, wykonując następujące polecenie:

Ulimit -u

Aby dowiedzieć się liczby bieżących plików, możesz użyć polecenia pokazanego na zrzucie ekranu poniżej.

lsof | WC -L

Polecenie pokazane poniżej można użyć do zwiększenia limitu plików deskryptora w celu rozwiązania tego błędu. Jednak może to nie działać, jeśli osiągnięto limit określony w plikach konfiguracyjnych.

Jak widać, system nie pozwala nam zwiększyć limitu. W takim przypadku musimy edytować kilka plików.

W pierwszym pliku do edycji zobaczysz dwa rodzaje limitów: twarde i miękkie limity:

Twardy limit reprezentuje maksymalny limit dozwolony dla miękkiego limitu. Edycja twardego limitu wymaga uprawnień.

Z drugiej strony system miękki jest wykorzystywany przez system do ograniczenia wszystkich zasobów systemowych do wykonywania procesów. Miękki limit nie może być większy niż twardy limit.

Możesz nauczyć się zarówno twardych, jak i miękkich limitów z poleceniami pokazanymi na poniższym zrzucie ekranu, gdzie Ulimit -Sn pokazuje miękki limit, a Ulimit -hn pokazuje twardy limit.

Najpierw otwórz następujący plik z uprawnieniami:

sudo nano/etc/bezpieczeństwo/limity.conf

Edytuj linie pokazane poniżej, zwiększając granicę. W moim przypadku zwiększam miękki limit z 1024 do 2048. Tutaj możesz również edytować twardy limit, jeśli to konieczne.

Następnie ponownie uruchom demon-reexec za pomocą SystemCTL, jak pokazano poniżej.

sudo Systemctl Daemon-Reexec

Otwórz nowy terminal lub ponownie uruchom sesję, aby sprawdzić zmiany Zmiany zostały pomyślnie wprowadzone i spróbuj ponownie zmienić UniMit, uruchamiając następujące polecenie i zmienić limit dla tego, który określony w określonym /itp./bezpieczeństwo/limity.conf plik.

Ulimit -n 2048

Jak widać powyżej, limit został pomyślnie zaktualizowany.

W przypadku, gdy nie działało to dla Ciebie, otwórz następujący plik z uprawnieniami:

sudo nano/etc/systemd/system.conf

Znajdź linię Defaultlimitnofile = i zmień pierwszą liczbę przed okrężnicą, zwiększając limit. W moim przypadku zwiększyłem go z 1024 do 2048. Następnie zamknij i wyjdź z pliku zapisując zmiany.

Otwórz także następujący plik z uprawnieniami:

sudo nano/etc/systemd/użytkownik.conf

Znajdź tę samą linię i edytuj ją, powtarzając wcześniej wprowadzone zmiany.

Ponownie uruchom demon Reexec za pomocą Systemctl.

sudo Systemctl Daemon-Reexec

Uruchom ponownie sesję i użyj następującego polecenia, zastępując 2048 limitem, który chcesz ustawić i skonfigurować w plikach konfiguracyjnych:

Ulimit -n 2048

Następujące polecenie zwraca limit dla całego systemu:

cat/proc/sys/fs/plik-max

Zmieniasz limit systemu za pomocą następującego polecenia:

sudo sysctl -w fs.plik-max =

Aby zmiana była trwała, edytuj następujący plik z uprawnieniami:

sudo nano /etc /sysctl.conf

Dodaj następującą wymianę linii Z nowym limitem, który chcesz ustawić:

fs.plik-max =

Uruchom ponownie, aby zastosować nowe zmiany z poniższym poleceniem.

sudo sysctl -p

To wszystko, po zwiększeniu Ulimit, „Zbyt wiele otwartych plików„Błąd musi zostać naprawiony.

Wniosek

Ten błąd może być łatwo naprawiony przez każdego użytkownika Linux. Linux oferuje różne sposoby podejścia do tego problemu, możesz spróbować wszystkich, aby pozbyć się tego błędu. Kroki opisane powyżej są ważne dla wielu dystrybucji Linuksa, ale wykonane na dystrybucjach opartych na debian. Jeśli chcesz dowiedzieć się o deskryptorach plików, opublikowaliśmy określone treści na ten temat, możesz przeczytać na tej stronie. Deskryptory plików są podstawowym elementem wszystkich systemów operacyjnych.

Dziękujemy za przeczytanie tego samouczka wyjaśniającego, jak rozwiązać błąd „zbyt wiele otwartych plików” w Linux. Śledź nas, aby uzyskać bardziej profesjonalne artykuły Linux.