Spraw, by ulimits działało z demonem start-stop

20

Mam init.dskrypt uruchamiający aplikację start-stop-daemon --chuid SOME_SYSTEM_USER. Oznacza to, że aplikacja działa pod innym użytkownikiem, a nie rootem.

Problem w tym, że aplikacja potrzebuje specjalnych ustawień limitów (mianowicie ulimit -n 64000), które ustawiłem limits.conf. Działa to całkiem nieźle, gdy uruchamiam go bezpośrednio z powłoki: su - SOME_SYSTEM_USER+ uruchom aplikację z powłoki.

Ale kiedy przejdziemy start-stop-daemon --chuidod /etc/init.d, limity te są ignorowane. Oczywiście aplikacja nie działa.

Jak wymusić start-stop-daemonhonorowanie ulimitustawień?


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

użytkownik124114
źródło

Odpowiedzi:

23

W tej chwili nie możesz. limits.conf(5)to konfiguracja pam_limits(8), która jest aktywowana przez stos PAM zgodnie z konfiguracją w /etc/pam.d. Jednak po start-stop-daemon(8)uruchomieniu ze skryptu init.d nie przechodzi przez stos PAM, więc tego rodzaju ustawienia nigdy nie są stosowane.

Błąd Debiana # 302079 zawiera łatkę umożliwiającą ustawienie limitów start-stop-daemon(8), ale błąd jest otwarty od 2005 roku i łatka nie została jeszcze scalona.

Chociaż nie jest to idealne, AFAIK obecnie zalecanym sposobem osiągnięcia tego celu jest dodanie ulimitwywołania w skrypcie init.d.

rtandy
źródło
Po prostu dodaj ulimitustawienie tuż przed start-stop-daemonpoleceniem. (tj. ulimit -n 64000) ... dla takich ignorantów jak ja.
Ryan Schumacher
Jeśli, w przeciwieństwie do PO, nie wiesz, który demon ulega awarii, mam dobre wyniki w ponownym uruchomieniu demonów Debian Wheezy po: echo "ulimit -c unlimited" | sudo tee /lib/lsb/init-functions.d/core-limit
Martin Dorey
Niektóre bardziej wartościowa informacja tła można znaleźć tutaj: serverfault.com/a/642082/22394
sehe
7

Możesz także użyć polecenia „limit” w skrypcie upstart.

W pliku /etc/init/foo.conf dodaj wiersz:

limit nofile 64000 64000

Pierwszy 64000 to limit miękki, a drugi to limit twardy.

Więcej informacji można znaleźć tutaj: http://upstart.ubuntu.com/cookbook/

dtynan
źródło