Linux beheben Sie den Fehler Zu viele geöffnete Dateien

Linux beheben Sie den Fehler Zu viele geöffnete Dateien

In diesem Tutorial wird erläutert, wie man den Linux -Fehler „zu viele geöffnete Dateien“ lösen.

Nach dem Lesen dieses Artikels werden Sie die Ursache für den Fehler verstehen, den Sie erhalten. Sie lernen nicht nur, den Fehler zu beheben, sondern auch andere wichtige Aspekte Ihrer Linux -OS -Dateiprozesse.

Die Bedeutung des Fehlers „zu viele geöffnete Dateien“

Wenn ein Benutzer einen Prozess ausführt. Beispielsweise können Dateideskriptoren den Kernel informieren, wie man auf eine Datei zugreift oder wie sie mit einer anderen Ressource umgehen können. Zum Beispiel, wenn wir ein Rohr verwenden, um einen Prozess zu einem anderen zu leiten.

Standardmäßig hat jeder von Linux ausgeführte Prozess mindestens 3 zugeordnete Dateien aufgerufen Dateideskriptoren: Stdin, Stdout und Stderr. Ihre Funktion ist in der folgenden Tabelle gezeigt.

Dateideskriptor Nummer Funktion
Stdin 0 Bezieht sich auf die Tastatureingangsmethode
Stdout 1 Druckt oder leitet die Ausgabe um, bezieht sich auf den Bildschirm
Stderr 2 Drucke oder leitet Fehler um, bezieht sich auf den Bildschirm

Es gibt eine Grenze der Dateideskriptoren Benutzer und Prozesse, die gleichzeitig ausgeführt werden können. Wenn die Grenze erreicht ist und der Benutzer oder der Prozess versuchen, zusätzliche Dateideskriptoren zu öffnen, erhalten wir die “Zu viele öffnete Dateien Fehler”.

Daher besteht die Lösung für diesen Fehler darin, die Grenze der Dateideskriptoren zu erhöhen, die ein Benutzer oder Prozess öffnen kann.

Behebung des Linux -Fehlers „Zu viele geöffnete Dateien“

Um das Grenzwert für die Deskriptordateien für die aktuelle Sitzung zu überprüfen, führen Sie den unten angegebenen Befehl aus.

Ulimit -n

Wie Sie oben sehen können, ist die Grenze 1024.

Lassen Sie uns nun das Benutzerlimit überprüfen, indem Sie den folgenden Befehl ausführen:

Ulimit -u

Um die Anzahl der aktuellen Dateien zu erfahren, können Sie den im folgenden Screenshot angezeigten Befehl verwenden.

lsof | WC -l

Der unten gezeigte Befehl kann verwendet werden, um die Begrenzung des Deskriptordateien zu erhöhen, um diesen Fehler zu lösen. Dies funktioniert jedoch möglicherweise nicht, wenn das in Konfigurationsdateien angegebene Grenze erreicht ist.

Wie Sie sehen können, erlaubt uns das System nicht, die Grenze zu erhöhen. In einem solchen Fall müssen wir einige Dateien bearbeiten.

In der ersten zu bearbeitenden Datei sehen Sie zwei Arten von Grenzen: harte und weiche Grenzen:

Die Festgrenze stellt die maximale Grenze dar, die für die Softgrenze zulässig ist. Die Bearbeitung der harten Grenze erfordert Privilegien.

Andererseits wird das System vom System verwendet, um alle Systemressourcen für die Ausführung von Prozessen einzuschränken. Die weiche Grenze kann nicht größer sein als die feste Grenze.

Sie können sowohl harte als auch weiche Grenzen mit den im folgenden Screenshot gezeigten Befehle lernen.

Öffnen Sie zunächst die folgende Datei mit Berechtigungen:

sudo nano/etc/Sicherheit/Grenzen.Conf

Bearbeiten Sie die nachstehend gezeigten Zeilen und erhöhen Sie die Grenze. In meinem Fall erhöhe ich die weiche Grenze von 1024 auf 2048. Hier können Sie bei Bedarf auch die harte Begrenzung bearbeiten.

Starten Sie dann die Daemon-Reexec mit SystemCTL wie unten gezeigt neu.

sudo systemctl Daemon-reexec

Öffnen Sie ein neues Terminal oder starten Sie die Sitzung neu, um die Änderungen erfolgreich vorzunehmen und versuchen, den Ulimit erneut zu ändern, indem Sie den folgenden Befehl ausführen und die Grenze für die in der angegeben /etc/Sicherheit/Grenzen.Conf Datei.

Ulimit -n 2048

Wie Sie oben sehen können, wurde die Grenze erfolgreich aktualisiert.

Für den Fall, dass es bei Ihnen nicht funktioniert hat, öffnen Sie die folgende Datei mit Berechtigungen:

sudo nano/etc/systemd/system.Conf

Finde die Linie DefaultLimitnoFile = und ändern Sie die erste Zahl vor dem Dickdarm, erhöhen Sie die Grenze. In meinem Fall habe ich es von 1024 auf 2048 erhöht. Schließen Sie dann die Datei, um die Änderungen zu speichern.

Öffnen Sie auch die folgende Datei mit Berechtigungen:

sudo nano/etc/systemd/user.Conf

Finden Sie die gleiche Zeile und bearbeiten Sie sie, um die zuvor vorgenommenen Änderungen zu wiederholen.

Starten Sie den Reexec -Daemon erneut mit Verwendung Systemctl.

sudo systemctl Daemon-reexec

Starten Sie die Sitzung neu und verwenden Sie den folgenden Befehl. Ersetzen Sie 2048 durch das Limit, das Sie in den Konfigurationsdateien festlegen und konfigurieren möchten:

Ulimit -n 2048

Der folgende Befehl gibt die Grenze für das gesamte System zurück:

CAT/Proc/Sys/FS/Datei-Max

Sie ändern die Systemgrenze mit dem folgenden Befehl:

sudo sysctl -w fs.Dateimax =

Um die Änderung dauerhaft zu machen, bearbeiten Sie die folgende Datei mit Berechtigungen:

sudo nano /etc /sysctl.Conf

Fügen Sie die folgende Zeile hinzu Mit der neuen Grenze, die Sie festlegen möchten:

fs.Dateimax =

Starten Sie neu, um neue Änderungen mit dem folgenden Befehl anzuwenden.

sudo sysctl -p

Das ist alles, nachdem sie die Ulimit erhöht haben, das "Zu viele offene Dateien"Fehler muss behoben werden.

Abschluss

Dieser Fehler kann einfach von jedem Linux -Benutzer behoben werden. Linux bietet verschiedene Möglichkeiten, um diesem Problem zu erreichen, und versuchen Sie es, alle zu versuchen, um diesen Fehler loszuwerden. Die oben beschriebenen Schritte sind für viele Linux -Verteilungen gültig, aber auf Debian -basierten Distributionen durchgeführt. Wenn Sie interessiert sind, über Dateideskriptoren zu erfahren, haben wir bestimmte Inhalte zu diesem Thema veröffentlicht, die Sie auf dieser Website lesen können. Dateideskriptoren sind eine grundlegende Komponente aller Betriebssysteme.

Vielen Dank, dass Sie dieses Tutorial gelesen haben, um zu erklären, wie Sie den Fehler „zu viele geöffnete Dateien“ unter Linux lösen können. Folgen Sie uns weiter für professionelle Linux -Artikel.