Lasse ulimits mit start-stop-daemon funktionieren


20

Ich habe ein init.dSkript, mit dem eine App gestartet wird start-stop-daemon --chuid SOME_SYSTEM_USER. Das heißt, die App wird unter einem anderen Benutzer und nicht unter root ausgeführt.

Problem ist, die App benötigt spezielle Limit-Einstellungen (nämlich ulimit -n 64000), die ich eingestellt habe limits.conf. Das funktioniert ganz gut, wenn ich es direkt von der Shell aus starte: su - SOME_SYSTEM_USER+ starte die App von der Shell aus.

Beim Durchlaufen start-stop-daemon --chuidvon /etc/init.dwerden diese Grenzwerte jedoch ignoriert. Dann funktioniert die App offensichtlich nicht.

Wie erzwinge ich start-stop-daemondas Einhalten der ulimitEinstellungen?


Debian Squeeze, 2.6.32-5-686 # 1 SMP Sa 5. Mai 01:33:08 UTC 2012 i686 GNU / Linux

Antworten:


23

Zu diesem Zeitpunkt können Sie nicht. limits.conf(5)ist die Konfiguration für pam_limits(8), die vom PAM-Stack entsprechend der Konfiguration in aktiviert wird /etc/pam.d. Da der start-stop-daemon(8)Start über ein init.d-Skript den PAM-Stapel jedoch nicht durchläuft, werden diese Einstellungen niemals angewendet.

Der Debian-Fehler # 302079 enthält einen Patch, um das Setzen von Limits zu ermöglichen start-stop-daemon(8), aber der Fehler ist seit 2005 offen und der Patch wurde noch nicht zusammengeführt.

ulimitAFAIK ist zwar nicht ideal, aber der empfohlene Weg, dies jetzt zu erreichen, besteht darin, einen Aufruf in Ihr init.d-Skript einzufügen.


Fügen Sie einfach die ulimitEinstellung direkt vor dem start-stop-daemonBefehl hinzu. (dh ulimit -n 64000) ... für die Unwissenden wie ich.
Ryan Schumacher

Wenn Sie im Gegensatz zum OP nicht wissen, welcher Dämon abstürzt, habe ich gerade gute Ergebnisse erzielt, als Debian Wheezy Dämonen neu startete, nachdem: echo "ulimit -c unlimited" | sudo tee /lib/lsb/init-functions.d/core-limit
Martin Dorey

Weitere wertvolle Hintergrundinformationen finden Sie hier: serverfault.com/a/642082/22394
siehe

7

Sie können auch den Befehl 'limit' im Upstart-Skript verwenden.

Fügen Sie in der Datei /etc/init/foo.conf die folgende Zeile hinzu:

limit nofile 64000 64000

Die erste 64000 ist die weiche Grenze, und die zweite ist die harte Grenze.

Weitere Informationen finden Sie hier: http://upstart.ubuntu.com/cookbook/

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.