A Linuxban megváltoztathatjuk a megnyitott fájlok maximális számát. Ezt a számot az ulimit parancs segítségével módosíthatja. Lehetőséget biztosít arra, hogy szabályozza a shell vagy az általa indított folyamat számára rendelkezésre álló erőforrásokat.
Legyen még olvasható: Linux Running Processes Limits on Per-Userl Level
Ezzel a rövid bemutatóval megmutatjuk, hogyan ellenőrizheti a megnyitott fájlok és fájlleírások aktuális limitjét, de ehhez root hozzáféréssel kell rendelkeznie a rendszeréhez.
Először nézzük meg, hogyan tudjuk kideríteni a megnyitott fájlleírók maximális számát a Linux rendszerünkön.
Find Linux Open File Limit
Az értéket a következő helyen tároljuk:
# cat /proc/sys/fs/file-max818354
A szám, amit látni fogsz, azt mutatja, hogy egy felhasználó hány fájlt nyithat meg bejelentkezési munkamenetben. Az eredmény a rendszertől függően eltérő lehet.
Egy CentOS szerveremen például a limit 818354-re volt beállítva, míg az Ubuntu szerveren, amit otthon futtatok, az alapértelmezett limit 176772 volt.
Ha látni szeretné a hard és soft limiteket, akkor a következő parancsokat használhatja:
Check Hard Limit in Linux
# ulimit -Hn4096
Check Soft Limits in Linux
# ulimit -Sn1024
A hard és soft értékek megtekintéséhez a különböző felhasználók esetében egyszerűen a “su” paranccsal válthat felhasználót arra a felhasználóra, amelynek a limitjét ellenőrizni szeretné.
Egy példa:
# su marin$ ulimit -Sn1024
$ ulimit -Hn4096
Hogyan ellenőrizze a rendszerszintű fájlleírók határait Linuxban
Ha szervert üzemeltet, egyes alkalmazásai magasabb határokat igényelhetnek a megnyitott fájlleírókhoz. Jó példa erre a MySQL/MariaDB szolgáltatások vagy az Apache webszerver.
A megnyitott fájlok limitjét Linuxban a fs.file-max
kernel direktíva szerkesztésével növelheti. Ehhez a sysctl segédprogramot használhatja.
A sysctl a kernel paramétereinek futásidejű konfigurálására szolgál.
A megnyitott fájlok limitjének 500000-re való növeléséhez például root felhasználóként a következő parancsot használhatja:
# sysctl -w fs.file-max=500000
A megnyitott fájlok aktuális értékét a következő paranccsal ellenőrizheti:
$ cat /proc/sys/fs/file-max
A fenti paranccsal az elvégzett módosítások csak a következő újraindításig maradnak aktívak. Ha véglegesen alkalmazni szeretné őket, akkor a következő fájlt kell szerkesztenie:
# vi /etc/sysctl.conf
Adja hozzá a következő sort:
fs.file-max=500000
A számot természetesen igényei szerint módosíthatja. A módosítások ismételt ellenőrzéséhez használja:
# cat /proc/sys/fs/file-max
A felhasználóknak ki kell jelentkezniük és újra be kell jelentkezniük, hogy a módosítások hatályba lépjenek. Ha azonnal alkalmazni szeretné a korlátozást, akkor a következő parancsot használhatja:
# sysctl -p
Felhasználói szintű nyitott fájl korlátozások beállítása Linuxban
A fenti példák, megmutatták, hogyan lehet globális korlátozást beállítani, de előfordulhat, hogy felhasználó alapon is szeretne korlátozást alkalmazni. Ehhez root felhasználóként a következő fájlt kell szerkesztened:
# vi /etc/security/limits.conf
Ha Linux rendszergazda vagy, javaslom, hogy nagyon ismerd meg ezt a fájlt és azt, hogy mit tudsz vele csinálni. Olvassa el az összes benne lévő megjegyzést, mivel nagy rugalmasságot biztosít a rendszer erőforrásainak kezelésében a felhasználók/csoportok különböző szintű korlátozásával.
A sorok, amelyeket hozzá kell adnia, a következő paramétereket veszik fel:
<domain> <type> <item> <value>
Itt egy példa a soft és hard korlátok beállítására a felhasználó marin:
## Example hard limit for max opened filesmarin hard nofile 4096## Example soft limit for max opened filesmarin soft nofile 1024
Végső gondolatok
Ez a rövid cikk egy alapvető példát mutatott arra, hogyan ellenőrizheti és konfigurálhatja a globális és felhasználói szintű korlátokat a megnyitott fájlok maximális számára.
Míg csak a felszínt karcoltuk, erősen bátorítom, hogy nézze meg és olvassa el részletesebben az /etc/sysctl.conf és az /etc/security/limits.conf állományokat, és tanulja meg, hogyan használja őket. Ezek egy nap nagy segítségedre lesznek.