Przynajmniej w systemie Linux większość dystrybucji wydaje się używać pam do uwierzytelniania. Jednym z modułów dostarczanych z pam jest moduł limitów . Cytowanie z README dla pam_limits:
The pam_limits PAM module sets limits on the system resources that can be obtained in a user-session. Users of uid=0 are affected by this limits, too.
W rezultacie możesz ustawić limity twarde dla użytkownika, grupy i domyślne w obu kategoriach (root to ustawia, a proces nie może żądać wyższych) i limity miękkie. Miękkie limity są zwykle ustawiane poniżej niż twarde limity, a aplikacja może je zwiększać w górę, aż osiągnie twardy limit.
W twoim przypadku, jeśli proces, który chcesz zwiększyć limity uruchomień jako zwykły użytkownik, możesz zwiększyć limity dla tego użytkownika lub grupy. Na przykład mam kilka zadań mysql cron na niektórych serwerach, które wymagają otwarcia dodatkowych uchwytów plików, więc ustawiłem to:
$ cat /etc/security/limits.d/mysql.conf
@mysql soft nofile 100000
@mysql hard nofile 200000
Nic nie wymaga ponownego uruchomienia; po zalogowaniu się do tego użytkownika możesz od razu zobaczyć, że nowe ograniczenia obowiązują.
Inną rzeczą, którą możesz zrobić, jeśli korzystasz z typowego systemu opartego na RedHat, jest umieszczenie wywołania ulimit w skrypcie / etc / sysconfig / $ SERVICE. Na przykład skrypt inicjujący Apache nazywa się /etc/init.d/httpd i jeśli to możliwe, pobiera plik konfiguracyjny / etc / sysconfig / httpd. Odkryłem, że łatwiej jest zarządzać, wykonując tę czynność zamiast edycji samego skryptu init, ponieważ skrypty init są aktualizowane po uaktualnieniu rpm, ale pliki sysconfig są aktualizowane tylko wtedy, gdy nie są zmieniane z domyślnego.