Wie überprüfe ich das ulimit für einen anderen Benutzer und ändere die geöffneten Dateien?

61936
Tony

Ich habe einen Prozess als Gearman-Benutzer und möchte dies ändern open files, um diesen unangenehmen Fehler zu vermeiden:

ERROR 2014-09-12 17: 49: 14.000000 [main] accept (Zu viele offene Dateien) -> libgearman-server / gearmand.cc: 788

Wie kann ich ulimit als anderer Benutzer unter Ubuntu ausführen und geöffnete Dateien ändern? Ich melde mich derzeit nicht als Gearman an, habe aber root-Zugriff. Ich habe es versucht:

su gearman --shell /bin/bash --command "ulimit -n" 

wie hier empfohlen , aber nichts wird ausgegeben:

$ su gearman --shell /bin/bash --command "ulimit -n" Password:  $ 
17

3 Antworten auf die Frage

21
phette23

Das nochmal aufgreifen, nur weil ich bei einer Google-Suche darüber gestolpert bin und Tonys Kommentar für nützlich befunden habe : Zwar werden Grenzwerte auf Prozessebene gesetzt, aber die Art und Weise, wie Sie die Grenzwerte für einen bestimmten Nutzer festlegen würden Finden Sie die Prozesse, die sie gestartet haben, und überprüfen Sie die proc/$/limits.

Speziell:

$ ps -u username # look up processes owned by user $ sudo grep 'open files' /proc/$/limits # find "Max open files" line for process ID 
Dies sollte die akzeptierte Antwort sein, um den aktuellen ulimit für den Redis-Benutzer unter Debian herauszufinden. tholu vor 8 Jahren 2
5
BIOSCMOS

Wenn Sie den ulimitBefehl ausführen, wirkt sich dies nur auf den laufenden Prozess ulimit(die Shell) und alle Unterprozesse aus. Wenn Sie also ausführen bash --command "ulimit -n", wirkt sich dies nur auf die Anzahl der geöffneten Dateien für diese Instanz von bash aus. Bash wird dann beendet, sodass zukünftige Prozesse nicht betroffen sind.

Um das zu erreichen, was Sie möchten (um das Limit für offene Dateien für Ihren tatsächlichen Prozess zu erhöhen), ist es wahrscheinlich sinnvoller, limits.confdie Datei zu bearbeiten, um das Limit für offene Dateien für Ihren speziellen Gearman-Benutzer zu erhöhen.

Beispiele für limits.conf finden Sie an anderer Stelle oder hier .

Das ist auch das, was ich gefunden habe, aber ich würde gerne prüfen können, ob es "in Kraft trat". Ich verstehe nicht mehr das Problem, das ich hatte, also bin ich mir sicher, dass es so ist Tony vor 9 Jahren 0
So prüfen Sie `more / proc // limits` ... vielleicht eine Antwort wert Tony vor 9 Jahren 8
Erwähnenswert ist auch die Position von limits.conf: `/ etc / security / limits.conf` UpTheCreek vor 9 Jahren 4
1
Christian Jürgens

Versuchen Sie es mit su - <USERNAME> -c ulimit' -Hn'. Ich habe es gerade auf CEntOS 7 getestet, und es funktioniert.