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.confa/etc/systemd/system.confs následujícím řádkem (ten se stará o grafické přihlášení):DefaultLimitNOFILE=65535 -
Upravte
/etc/security/limits.confs 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.confs tímto obsahem:[Manager] DefaultLimitNOFILE=65535 -
spustit
systemctl daemon-reexecjako 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=65535nebo 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