OK, konečně jsem na to přišel. Limity, které jsem nastavoval v /etc/security/limits.conf
byly použity, ale nebyly aplikovány na grafické přihlášení. To lze ověřit takto z okna terminálu:
$ ulimit -n
4096
$ su mkasberg
Password:
$ ulimit -n
65535
Další výzkum mě přivedl k této zprávě o chybě, která mě nasměrovala správným směrem. Abychom mohli upravit limit, který používá přihlašovací shell, musíme přidat následující řádek do /etc/systemd/user.conf
:
DefaultLimitNOFILE=65535
Tato změna funguje, ale ovlivní pouze měkký limit. (Stále nás omezuje pevný limit 4096.) Abychom ovlivnili také pevný limit, musíme upravit /etc/systemd/system.conf
se stejnou změnou.
Změny, které jsem provedl v /etc/pam.d
nebyly nutné. Alespoň na Ubuntu to již funguje. Také nebylo nutné měnit nastavení pro root
a *
v limitech.conf. Změna limitů pro mkasberg
bylo dostatečné, alespoň pro můj případ použití.
V souhrnu
Pokud chcete zvýšit limit zobrazený o ulimit -n
, měli byste:
-
Upravte
/etc/systemd/user.conf
a/etc/systemd/system.conf
s následujícím řádkem (ten se stará o grafické přihlášení):DefaultLimitNOFILE=65535
-
Upravte
/etc/security/limits.conf
s následujícími řádky (to se postará o přihlášení bez GUI):mkasberg hard nofile 65535 mkasberg soft nofile 65535
-
Aby se změny projevily, restartujte počítač.
Není třeba nic měnit v /etc/security/limits.conf
Pokud používáte systemd, je ignorován.
(reprodukuje se upravená odpověď na jinou otázku v síti...)
Alternativa pro ty, kteří nechtějí upravovat výchozí /etc/systemd/system.conf
a /etc/systemd/user/conf
soubory:
-
vytvořte nový soubor
/etc/systemd/system.conf.d/limits.conf
s tímto obsahem:[Manager] DefaultLimitNOFILE=65535
-
spustit
systemctl daemon-reexec
jako root -
odhlaste se a znovu se přihlaste
-
zkontrolujte svůj nový limit pomocí
ulimit -n
.
Viz systemd-system.conf
manuálovou stránku pro podrobnosti.
TL;DRI cítil potřebu soustředit odpovědi, aby se daly snáze najít. Trvalo mi věky, než jsem dal všechny části dohromady, aby to fungovalo správně...
Je třeba zvážit 2 místa.
-
Relace GUI
$ grep DefaultLimitNOFILE /etc/systemd/system.conf DefaultLimitNOFILE=65535
nebo lépe zde:
$ grep NOFILE /etc/systemd/system.conf.d/limits.conf DefaultLimitNOFILE=65535
-
prostředí prostředí
$ grep nofile /etc/security/limits.conf user soft nofile 65535 user hard nofile 65535`
nebo lépe zde:
$ grep nofile /etc/security/limits.d/user.conf user soft nofile 65535 user hard nofile 65535
-
Po změně nastavení ve výše uvedených souborech restartujte a poté zkontrolujte limity pomocí:
ulimit -n -Hn -Sn