V Linuxu můžete změnit maximální počet otevřených souborů. Tento počet můžete změnit pomocí příkazu ulimit. V tomto krátkém návodu si ukážeme, jak zkontrolovat aktuální limit otevřených souborů a popisů souborů, ale k tomu budete potřebovat root přístup do systému.
Nejprve se podíváme, jak můžeme zjistit maximální počet otevřených popisů souborů ve vašem systému Linux.
Zjistit limit otevřených souborů v Linuxu
Hodnota je uložena v:
# cat /proc/sys/fs/file-max818354
Číslo, které uvidíte, ukazuje počet souborů, které může mít uživatel otevřeny za jednu přihlašovací relaci. Výsledek se může lišit v závislosti na systému.
Například na mém serveru CentOS byl limit nastaven na 818354, zatímco na serveru Ubuntu, který provozuji doma, byl výchozí limit nastaven na 176772.
Pokud chcete zobrazit tvrdé a měkké limity, můžete použít následující příkazy:
Zkontrolovat tvrdý limit v Linuxu
# ulimit -Hn4096
Zkontrolovat měkké limity v Linuxu
# ulimit -Sn1024
Pro zobrazení tvrdých a měkkých hodnot pro různé uživatele můžete jednoduše přepnout uživatele pomocí „su“ na uživatele, jehož limity chcete zkontrolovat.
Například:
# su marin$ ulimit -Sn1024
$ ulimit -Hn4096
Jak zkontrolovat systémové limity popisovačů souborů v Linuxu
Pokud provozujete server, mohou některé vaše aplikace vyžadovat vyšší limity pro otevřené popisovače souborů. Dobrým příkladem jsou služby MySQL/MariaDB nebo webový server Apache.
Limit otevřených souborů můžete v Linuxu zvýšit úpravou směrnice jádra fs.file-max
. K tomuto účelu můžete použít nástroj sysctl.
Sysctl slouží ke konfiguraci parametrů jádra za běhu.
Chcete-li například zvýšit limit otevřených souborů na 500 000, můžete jako root použít následující příkaz:
# sysctl -w fs.file-max=500000
Aktuální hodnotu otevřených souborů můžete zkontrolovat následujícím příkazem:
$ cat /proc/sys/fs/file-max
Pomocí výše uvedeného příkazu zůstanou provedené změny aktivní pouze do příštího restartu. Pokud je chcete použít trvale, musíte upravit následující soubor:
# vi /etc/sysctl.conf
Přidejte následující řádek:
fs.file-max=500000
Počet můžete samozřejmě změnit podle svých potřeb. Pro ověření změn opět použijte:
# cat /proc/sys/fs/file-max
Uživatelé se budou muset odhlásit a znovu přihlásit, aby se změny projevily. Pokud chcete limit použít okamžitě, můžete použít následující příkaz:
# sysctl -p
Nastavení limitů otevřených souborů na uživatelské úrovni v Linuxu
Výše uvedené příklady, ukázaly, jak nastavit globální limity, ale můžete chtít použít limity pro jednotlivé uživatele. Za tímto účelem budete muset jako uživatel root upravit následující soubor:
# vi /etc/security/limits.conf
Jste-li správcem systému Linux, doporučuji vám, abyste se s tímto souborem důkladně seznámili a věděli, co s ním můžete dělat. Přečtěte si v něm všechny komentáře, protože poskytuje velkou flexibilitu, pokud jde o správu systémových prostředků omezením uživatelů/skupin na různých úrovních.
Řádky, které byste měli přidat, přebírají následující parametry:
<domain> <type> <item> <value>
Tady je příklad nastavení měkkého a tvrdého limitu pro uživatele marin:
## Example hard limit for max opened filesmarin hard nofile 4096## Example soft limit for max opened filesmarin soft nofile 1024
Myšlenky na závěr
Tento krátký článek vám ukázal základní příklad toho, jak můžete zkontrolovat a nakonfigurovat limity na globální a uživatelské úrovni pro maximální počet otevřených souborů.
Přestože jsme jen poškrábali povrch, vřele vám doporučuji, abyste se podrobněji podívali a přečetli si ohledně souborů /etc/sysctl.conf a /etc/security/limits.conf a naučili se je používat. Jednou vám budou velmi užitečné.