Dzieje się tak w Ubuntu Release 12.04 (precyzyjnie) 64-bitowym jądrze Linux 3.2.0-25-virtual
Próbuję zwiększyć liczbę otwartych plików dozwolonych dla użytkownika. Dotyczy to mojej aplikacji Java Eclipse, w której obecny limit 1024 nie jest wystarczający.
Zgodnie z postami, które znalazłem do tej pory, powinienem móc umieszczać wiersze
/etc/security/limits.conf jak to:
soft nofile 4096
hard nofile 4096
aby zwiększyć liczbę otwartych plików dozwoloną dla wszystkich użytkowników.
Ale to nie działa dla mnie i myślę, że problem nie jest związany z tym plikiem.
Dla wszystkich użytkowników domyślny limit wynosi 1024, niezależnie od tego, co znajduje się w /etc/security/limits.conf (zrestartowałem się po zmianie tego pliku)
$ ulimit -n
1024
Teraz, pomimo wpisów w /etc/security/limits.conf, nie mogę tego zwiększyć:
$ ulimit -n 2048
-bash: ulimit: otwarte pliki: nie można zmodyfikować limitu: Operacja niedozwolona Dziwne jest to, że mogę zmienić limit w dół , ale nie mogę go zmienić w górę - nawet w celu powrotu do liczby poniżej pierwotnego limitu:
$ ulimit -n 800
$ ulimit -n
800
$ ulimit -n 900
-bash: ulimit: open files: cannot modify limit: Operation not permitted
Jako root mogę zmienić ten limit na cokolwiek chcę, w górę lub w dół. Wydaje się, że nawet nie obchodzi go rzekomo ogólnosystemowy limit w / proc / sys / fs / file-max
# cat /proc/sys/fs/file-max
188897
# ulimit -n 188898
# ulimit -n
188898
Ale nawet gdy zaćmienie mam działać jako root, moja aplikacja nadal ulega awarii z powodu wyjątku „Too Many Open File”!
Jak dotąd nie znalazłem sposobu na zwiększenie limitu otwartych plików dla użytkownika innego niż root.
Jak mam to właściwie zrobić? Przejrzałem kilka innych postów, ale bez powodzenia!
/etc/security/limits.conf
może być konieczne wylogowanie, a następnie ponowne zalogowanie się przed użyciem nowego maksymalnego limitu. Zrobiłem to i byłem zaskoczony,ulimit -Hs
wciąż pokazując 1000, kiedy właśnie podniosłem go do 1000000! Następnie wylogowałem się i wróciłem, a ulimit pokazał nową kwotę.