V Linuxu můžete změnit maximální množství otevřených souborů. Toto číslo můžete upravit pomocí ulimit příkaz. Poskytuje vám možnost ovládat zdroje dostupné pro shell nebo proces, který spouští.
Čtěte také: Nastavte limity běžících procesů Linuxu na úrovni jednotlivých uživatelů
V tomto krátkém tutoriálu vám ukážeme, jak zkontrolovat aktuální limit otevřených souborů a popisů souborů, ale abyste to mohli udělat, musíte mít ke svému systému přístup root.
Nejprve se podívejme, jak můžeme zjistit maximální počet otevřených deskriptorů souborů ve vašem systému Linux.
Najít Linux Open File Limit
Hodnota je uložena v:
# cat /proc/sys/fs/file-max 818354
Číslo, které uvidíte, ukazuje počet souborů, které může uživatel otevřít během jedné přihlašovací relace. Výsledek se může lišit v závislosti na vašem systému.
Například na CentOS můj server, limit byl nastaven na 818354 , zatímco používáte Ubuntu server, který spouštím doma, byl výchozí limit nastaven na 176772 .
Pokud chcete vidět tvrdé a měkké limity, můžete použít následující příkazy:
Zkontrolujte pevný limit v Linuxu
# ulimit -Hn 4096
Zkontrolujte měkké limity v Linuxu
# ulimit -Sn 1024
Chcete-li zobrazit tvrdé a měkké hodnoty pro různé uživatele, můžete jednoduše přepnout uživatele pomocí “su“ uživateli, které limity chcete zkontrolovat.
Například:
# su marin $ ulimit -Sn 1024
$ ulimit -Hn 4096
Jak zkontrolovat limity deskriptorů souborů v systému Linux
Pokud provozujete server, některé z vašich aplikací mohou vyžadovat vyšší limity pro popisovače otevřených souborů. Dobrým příkladem je MySQL/MariaDB služby nebo Apache webový server.
Limit otevřených souborů v Linuxu můžete zvýšit úpravou direktivy jádra fs.file-max
. K tomuto účelu můžete použít sysctl utility.
Sysctl se používá 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 pomocí následujícího příkazu:
$ cat /proc/sys/fs/file-max
Pomocí výše uvedeného příkazu zůstanou změny, které jste provedli, aktivní pouze do příštího restartu. Pokud je chcete použít trvale, budete muset upravit následující soubor:
# vi /etc/sysctl.conf
Přidejte následující řádek:
fs.file-max=500000
Číslo si samozřejmě můžete změnit podle svých potřeb. Chcete-li znovu ověřit změny, použijte:
# cat /proc/sys/fs/file-max
Aby se změny projevily, uživatelé se budou muset odhlásit a znovu přihlásit. Pokud chcete limit použít okamžitě, můžete použít následující příkaz:
# sysctl -p
Nastavit limity pro otevřený soubor na uživatelské úrovni v systému Linux
Výše uvedené příklady ukázaly, jak nastavit globální limity, ale možná budete chtít použít limity na základě uživatele. Za tímto účelem budete jako uživatel root muset upravit následující soubor:
# vi /etc/security/limits.conf
Pokud jste správce Linuxu, doporučuji vám, abyste se s tímto souborem a s tím, co s ním můžete dělat, velmi dobře seznámili. Přečtěte si všechny komentáře v něm, protože poskytuje velkou flexibilitu, pokud jde o správu systémových prostředků, protože omezuje uživatele/skupiny na různých úrovních.
Řádky, které byste měli přidat, mají následující parametry:
<domain> <type> <item> <value>
Zde je příklad nastavení měkkých a tvrdých limitů pro uživatele marin :
## Example hard limit for max opened files marin hard nofile 4096 ## Example soft limit for max opened files marin soft nofile 1024
Poslední myšlenky
Tento krátký článek vám ukázal základní příklad toho, jak můžete zkontrolovat a nakonfigurovat globální limity a limity na uživatelské úrovni pro maximální počet otevřených souborů.
Zatímco jsme právě poškrábali povrch, důrazně vám doporučuji, abyste se podrobněji podívali a přečetli si o /etc/sysctl.conf a /etc/security/limits.conf a naučit se je používat. Jednoho dne vám velmi pomohou.