In Linux können Sie die maximale Anzahl der offenen Dateien ändern. Sie können diese Zahl mit dem Befehl ulimit ändern. Er gibt Ihnen die Möglichkeit, die für die Shell oder den von ihr gestarteten Prozess verfügbaren Ressourcen zu kontrollieren.
Lesen Sie auch: Limits für laufende Linux-Prozesse auf Benutzerebene festlegen
In diesem kurzen Tutorial zeigen wir Ihnen, wie Sie Ihr aktuelles Limit an offenen Dateien und Dateibeschreibungen überprüfen können, aber dazu benötigen Sie Root-Zugriff auf Ihr System.
Zunächst werden wir sehen, wie wir die maximale Anzahl der geöffneten Dateideskriptoren auf Ihrem Linux-System herausfinden können.
Find Linux Open File Limit
Der Wert ist gespeichert in:
# cat /proc/sys/fs/file-max818354
Die Zahl, die Sie sehen werden, zeigt die Anzahl der Dateien, die ein Benutzer pro Anmeldesitzung geöffnet haben kann. Das Ergebnis kann je nach System unterschiedlich sein.
Auf einem CentOS-Server von mir war das Limit beispielsweise auf 818354 gesetzt, während auf dem Ubuntu-Server, den ich zu Hause betreibe, das Standardlimit auf 176772 gesetzt war.
Wenn man die Hard- und Softlimits sehen möchte, kann man folgende Befehle verwenden:
Hartes Limit in Linux prüfen
# ulimit -Hn4096
Weiche Limits in Linux prüfen
# ulimit -Sn1024
Um die harten und weichen Werte für verschiedene Benutzer zu sehen, kann man einfach mit „su“ zu dem Benutzer wechseln, dessen Limits man prüfen möchte.
Zum Beispiel:
# su marin$ ulimit -Sn1024
$ ulimit -Hn4096
Systemweite Dateideskriptor-Limits in Linux prüfen
Wenn Sie einen Server betreiben, können einige Ihrer Anwendungen höhere Limits für geöffnete Dateideskriptoren erfordern. Ein gutes Beispiel dafür sind MySQL/MariaDB-Dienste oder Apache-Webserver.
Sie können das Limit für geöffnete Dateien in Linux erhöhen, indem Sie die Kernel-Direktive fs.file-max
bearbeiten. Zu diesem Zweck können Sie das Dienstprogramm sysctl verwenden.
Sysctl wird verwendet, um Kernelparameter zur Laufzeit zu konfigurieren.
Um beispielsweise das Limit für geöffnete Dateien auf 500000 zu erhöhen, können Sie als root folgenden Befehl verwenden:
# sysctl -w fs.file-max=500000
Sie können den aktuellen Wert für geöffnete Dateien mit folgendem Befehl überprüfen:
$ cat /proc/sys/fs/file-max
Mit dem obigen Befehl bleiben die von Ihnen vorgenommenen Änderungen nur bis zum nächsten Neustart aktiv. Wenn Sie die Änderungen dauerhaft übernehmen wollen, müssen Sie die folgende Datei bearbeiten:
# vi /etc/sysctl.conf
Fügen Sie die folgende Zeile ein:
fs.file-max=500000
Natürlich können Sie die Zahl nach Ihren Bedürfnissen ändern. Um die Änderungen zu überprüfen, verwenden Sie erneut:
# cat /proc/sys/fs/file-max
Die Benutzer müssen sich abmelden und erneut anmelden, damit die Änderungen wirksam werden. Wenn Sie die Beschränkung sofort anwenden möchten, können Sie den folgenden Befehl verwenden:
# sysctl -p
Beschränkungen für offene Dateien auf Benutzerebene in Linux festlegen
Die obigen Beispiele haben gezeigt, wie man globale Beschränkungen festlegt, aber Sie möchten vielleicht Beschränkungen auf Benutzerbasis anwenden. Zu diesem Zweck müssen Sie als Benutzer root die folgende Datei bearbeiten:
# vi /etc/security/limits.conf
Wenn Sie ein Linux-Administrator sind, schlage ich vor, dass Sie sich mit dieser Datei und den Möglichkeiten, die Sie darin haben, vertraut machen. Lesen Sie alle Kommentare darin, denn sie bietet eine große Flexibilität bei der Verwaltung von Systemressourcen, indem sie Benutzer/Gruppen auf verschiedenen Ebenen einschränkt.
Die Zeilen, die Sie hinzufügen sollten, nehmen die folgenden Parameter an:
<domain> <type> <item> <value>
Hier ist ein Beispiel für das Setzen von weichen und harten Limits für den Benutzer marin:
## Example hard limit for max opened filesmarin hard nofile 4096## Example soft limit for max opened filesmarin soft nofile 1024
Abschließende Gedanken
Dieser kurze Artikel hat Ihnen ein grundlegendes Beispiel gezeigt, wie Sie globale und benutzerspezifische Limits für die maximale Anzahl der geöffneten Dateien überprüfen und konfigurieren können.
Wir haben zwar nur an der Oberfläche gekratzt, aber ich empfehle Ihnen dringend, einen genaueren Blick auf /etc/sysctl.conf und /etc/security/limits.conf zu werfen und zu lernen, wie man sie benutzt. Sie werden Ihnen eines Tages eine große Hilfe sein.