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ę.Odpowiedzi:
ulimit
Poleceń domyślnie zmienia dysku granice, które można (użytkownik) jest niższy, ale nie może podnieść.Użyj opcji -S , aby zmienić limit SOFT , który może wynosić od 0- { HARD }.
Właściwie aliasowałem
ulimit
doulimit -S
, więc przez cały czas domyślnie są ustawione miękkie granice.Jeśli chodzi o problem, brakuje Ci kolumny we wpisach w
/etc/security/limits.conf
.Powinny być CZTERY kolumny, ale w twoim przykładzie brakuje pierwszej.
Pierwsza kolumna opisuje, kogo dotyczy limit. „*” to symbol wieloznaczny, co oznacza wszystkich użytkowników. Aby podnieść limity rootowania , musisz jawnie wpisać „root” zamiast „*”.
Musisz także edytować
/etc/pam.d/common-session*
i dodać następujący wiersz na końcu:źródło
/etc/pam.d/common-session*
i właśnie go edytowałemcommon-session
, a nawet po ponownym uruchomieniu nie zadziałało. Ale po dodaniu tej samej linii (napam_limits.so
) docommon-session-noninteractive
,ulimit -n
wyświetlany nową wartość po świeżej login (nie wymaga restartu). FWIW Próbowałem zmienić limit rootowania (tylko).Jeśli używasz miękkich i twardych limitów dla poszczególnych użytkowników, możesz użyć czegoś takiego:
aby sprawdzić, czy ustawienia działają dla tego konkretnego użytkownika, czy nie.
źródło
Mam problem z uruchomieniem tego.
Korzystanie z poniższych opcji umożliwia aktualizację bez względu na uprawnienia użytkownika.
źródło
$ sudo sysctl -w fs.inotify.max_user_watches=100000 fs.inotify.max_user_watches = 100000 $ ulimit -n 1024