Úvod
ulimit
je vestavěný příkaz prostředí Linux, který umožňuje zobrazení nebo omezení množství systémových prostředků které konzumují jednotliví uživatelé. Omezení využití zdrojů je cenné v prostředích s více uživateli a problémy s výkonem systému.
V tomto tutoriálu se naučíte používat ulimit
příkaz v Linuxu s příklady.
Předpoklady
- Systém se systémem Linux
- Přístup k terminálu
- Oprávnění sudo
Co je limited.conf?
Soubor limits.conf file je konfigurační soubor, který definuje nastavení alokace systémových prostředků ulimit
používá. Úplná cesta ke konfiguračnímu souboru je /etc/security/limits.conf .
Změna hodnot v souboru přetrvává i po restartu systému. Pro úpravy limits.conf jsou vyžadována oprávnění superuživatele soubor.
První sekce limits.conf soubor vypadá takto:
Vysvětlení ulimit, Soft Limit a Hard Limit v Linuxu
Následující části vysvětlují ulimit
syntaxe a rozdíl mezi dvěma typy omezení zdrojů – měkký limit a pevný limit .
ulimit syntaxe
ulimit
příkaz má následující obecnou syntaxi:
ulimit [flags][limit]
Chcete-li například nastavit velikost fyzické paměti v kilobajtech, zadejte:
ulimit -m 15000
Příznaky
Použijte ulimit
příznaky pro zobrazení nebo omezení jednotlivých hodnot pro různé systémové prostředky. Když [limit]
je daná, je to nová hodnota zadaného zdroje.
Dostupné příznaky jsou:
Příznak | Popis |
---|---|
-H | pevný limit pro daný zdroj. Pouze uživatelé root mohou zvýšit pevný limit a jakýkoli proces ho může snížit. |
-S | Měkký limit pro daný zdroj. Jakýkoli proces může změnit měkký limit. |
-a | Uvádí všechny aktuální limity zdrojů. |
-b | Maximální velikost vyrovnávací paměti soketu. |
-c | Velikost výpisu jádra, vyjádřená počtem 512bajtových bloků. |
-d | Velikost datové oblasti v kilobajtech. |
-e | Nejvyšší priorita plánování procesů (pěkné). |
-f | Limit velikosti souboru v blocích při použití [limit] parametr. Není uveden [limit] dává příkazu, aby oznámil limit velikosti souboru. |
-i | Limit počtu čekajících signálů. |
-k | Limit počtu přidělených front. |
-l | Maximální povolená velikost pro uzamčení v paměti. |
-m | Velikost fyzické paměti v kilobajtech. |
-n | Maximální počet deskriptorů souborů, které může mít proces. |
-p | Velikost vyrovnávací paměti potrubí. |
-P | Maximální počet pseudoterminálů. |
-q | Maximální počet bajtů ve frontách zpráv POSIX. |
-r | Maximální počet vláken, které může mít proces. |
-R | Maximální doba běhu procesu vyjádřená v mikrosekundách. |
-s | Velikost zásobníku v kilobajtech. |
-t | Udává maximální dobu běhu procesu v sekundách. |
-T | Limit počtu vláken. |
-u | Udává, kolik procesů může uživatel vytvořit. |
-v | Maximální dostupná virtuální paměť pro procesy. |
-x | Maximální počet uzamčení souborů. |
[limit]
Parametra
Přidání [limit]
předá novou hodnotu pro zadané prostředky. Když je vynechán, příkaz vytiskne aktuální hodnotu měkkého limitu pro zadaný zdroj, pokud nezadáte -H
vlajka.
Limit platí pro měkký i tvrdý limit, pokud ani -H
ani -S
jsou specifikovány příznaky.
Výstupní hodnoty
ulimit
příkaz má dvě výstupní hodnoty:
0
. Označuje úspěšné dokončení.>0
. Požadavek na vyšší limit byl zamítnut nebo došlo k chybě.
Měkký limit
Limity měkkých prostředků jsou hodnoty vynucené jádrem pro odpovídající prostředek. Měkký limit může spravovat každý uživatel a jeho maximální hodnota nemůže překročit pevný limit. Pevný limit funguje jako strop pro měkký limit.
Chcete-li zobrazit podrobné měkké limity pro aktuálního uživatele, spusťte:
ulimit -Sa
Pevný limit
Pevný limit zdrojů definuje limit fyzického zdroje pro uživatele. Pevný limit je zároveň maximální hodnotou pro měkký limit. Pevný limit mohou změnit pouze uživatelé root .
Chcete-li zobrazit podrobné pevné limity pro aktuálního uživatele, spusťte:
ulimit -Ha
Jak používat ulimit
Spusťte ulimit
příkaz zadáním názvu příkazu do terminálu:
ulimit
Výstup zobrazuje množství prostředků, ke kterým má aktuální uživatel přístup. V tomto příkladu má uživatel neomezené systémové prostředky. Chcete-li zobrazit nebo nastavit limity jednotlivých zdrojů, použijte dostupný ulimit
příznaky.
Následující sekce uvádí nejběžnější použití ulimit
příkaz.
Podrobná zpráva o limitu
Získejte podrobnou zprávu se všemi limity zdrojů pro aktuálního uživatele zadáním -a
příznak:
ulimit -a
Výstup obsahuje podrobnou zprávu o limitech zdrojů pro aktuálního uživatele.
Omezit číslo procesu
Omezte maximální počet procesů uživatele zadáním -u
příznak a počet procesů.
Například omezíme číslo procesu na 10:
ulimit -u 10
Omezení maximálního počtu procesů na uživatele jim zabrání ve využití všech prostředků systému. Omezení počtu procesů také zabrání nepříznivým účinkům potenciálních útoků, jako je vidlicová bomba.
Například:
Ve výše uvedeném příkladu jsme nejprve omezili číslo procesu na 10 a poté provedli vidlicovou bombu. Vidlicová bomba by jinak spotřebovala všechny zdroje a systém by přestal reagovat.
Omezit velikost souboru
-f
flag nastavuje maximální velikost souboru, kterou může uživatel vytvořit. Například následující příkaz omezuje velikost souboru na 50 kB:
ulimit -f 50
Otestujte, zda limit funguje, vytvořením většího souboru. Například jsme použili příkaz cat k přesměrování /dev/zero výstup do souboru, který by byl mnohem větší než 50 kB:
Výstup uvádí, že byl překročen limit velikosti souboru. Zkontrolujte velikost souboru spuštěním:
ls -lh file
Výstup příkazu ls ukazuje, že velikost souboru je přesně 50 kB, což je limit, který jsme dříve nastavili.
Omezit maximální virtuální paměť
Použijte -v
příznak pro nastavení maximální velikosti virtuální paměti dostupné pro proces. Omezení virtuální paměti procesu zabrání tomu, aby spotřeboval veškerou paměť, a zabrání tomu, aby byl proces vyhazován.
Například následující příkaz omezuje virtuální paměť dostupnou pro proces na 1000 kB:
ulimit -v 1000
Omezit počet otevřených souborů
-n
příznak omezuje počet současně otevřených souborů (deskriptorů souborů). Následující příklad nastaví počet otevřených souborů na pět:
ulimit -n 5
Abychom to otestovali, pokusíme se otevřít více textových souborů, což vede k chybě:
Upravte soubor limited.conf na Změnit měkký nebo pevný limit
Chcete-li změnit měkký nebo pevný limit, upravte hodnoty v limits.conf soubor.
Postupujte podle následujících kroků:
1. Otevřete okno terminálu a změňte adresář na /etc/security
:
cd /etc/security
2. Otevřete soubor limits.conf pomocí textového editoru, jako je editor vim.
vim limits.conf
3. Změňte limitní hodnoty úpravou stávajících záznamů nebo přidáním nového. Každá položka omezení má čtyři části:
<domain>
. Definuje uživatele, skupinu nebo obsahuje zástupný znak (*
nebo%
).<type>
. Přijímá dvě hodnoty -soft
nebohard
.<item>
. Přijímá libovolnou z hodnot uvedených v konfiguračním souboru.<value>
. Celočíselná hodnota vyjádřená v jednotce spojené s<item>
.
Například:
Při úpravě konfiguračního souboru nezapomeňte odkomentovat řádek.