V tomto tutoriálu pro začátečníky se dozvíte o příkazu ulimit v Linuxu. Dozvíte se, jak jej používat k řízení přidělování systémových prostředků.
Co je ulimit v Linuxu?
Ulimit je vestavěný příkaz shellu určený k zobrazení, alokaci a omezení zdrojů. Pro každý systém je nezbytné regulovat tyto typy ovládání.
Tento typ řízení lze vynutit na globální, skupinové a uživatelské úrovni. Kromě zajištění hladkého zpracování úloh zabraňuje nežádoucím procesům, aby mohly pohltit systémové zdroje, jako je RAM a výkon CPU.
Ulimit je propojen s konfiguračním souborem zabezpečení. Vaše přesná poloha se může lišit, ale obvykle je to něco jako /etc/security/limits.conf
. Ulimit nám umožňuje tuto konfiguraci rychle upravit.
Měkké vs. tvrdé limity
Jako uživatel můžete ve skutečnosti upravit nastavení ulimit.
Možná se ptáte, proč vůbec nastavovat limit, když si ho může uživatel upravit. Zde vstupují do hry měkké a tvrdé limity.
Takže z pohledu administrátora můžete dát přednost tomu, aby se váš uživatel pohyboval kolem určité hodnoty. Toto by byl váš měkký limit (řekněme 25).
Potom můžete stanovit pevný limit, který by daný uživatel nemohl překročit (50). Uživatel by byl oprávněn zvýšit svůj limit z 25 na 50.
Použití ulimit v Linuxu

Zde je syntaxe příkazu ulimit:
ulimit <options>
Zobrazit všechny limity pro každého uživatele
Všechny druhy limitů pro konkrétního uživatele můžete zobrazit tímto způsobem:
ulimit -a user_name
-a
flag zobrazí všechny možnosti a jejich konfiguraci pro vaše konkrétní uživatelské jméno.
Pokud vynecháte uživatelské_jméno, zobrazí se vám limity. Dovolte mi, abych vám ukázal limity nastavené ve výchozím nastavení:
[email protected]:~$ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 31503
max locked memory (kbytes, -l) 65536
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 31503
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
Vaše výchozí hodnoty se samozřejmě mohou lišit od mých. Toto zobrazení zobrazuje popis, přiřazený příznak (který lze použít pro změnu limitů) a konfiguraci.
Zobrazit tvrdé a měkké limity
Je také možné zobrazit kterýkoli z těchto příslušných limitů s příznakem.
Pro zobrazení měkkých limitů použijte volbu -S:
ulimit -S
Pro zobrazení pevných limitů použijte volbu -H:
ulimit -H
Je užitečnější kombinovat je s konkrétními příznaky shora. Pokud tedy chcete zkontrolovat pevný limit maximálního počtu uživatelských procesů, zadejte:
[email protected]:~$ ulimit -Hu
31503
Změnit limity (dočasně)
Nyní změňme tuto hodnotu na 31500 pro demonstrační účely a znovu zkontrolujte pevný limit.
[email protected]:~$ ulimit -u 31500
[email protected]:~$ ulimit -Hu
31500
Stojí za zmínku, že jakékoli změny, které vám vaše oprávnění umožňuje, budou zapsány pouze dočasně a ovlivní váš aktuální shell.
Abych to potvrdil, opustil jsem svůj shell a vytvořil nový terminál a získal původní výchozí hodnotu.
[email protected]:~$ ulimit -Hu
31503
Následující část ukazuje, jak provést změny natrvalo.
Provádění trvalých změn v ulimit
Jak jsem zmínil na začátku článku, ulimit se řídí /etc/security/limits.conf. Pokud chcete provést nějaké trvalé změny v ulimits libovolného uživatele, budete muset provést změny v souboru zabezpečení jako root.
Při úpravách musíte zahrnout tyto čtyři prvky:
<domain> <type> <item> <value>
Zde je text, který jsem připojil k souboru, abych nastavil pevný limit počtu procesů pro uživatele christoper (tj. můj vlastní účet):
christopher hard nproc 2000
Mějte na paměti, že je osvědčeným postupem nepovolovat účet root, pokud si plně neuvědomujete možné důsledky. Udělal jsem to na virtuálním počítači, takže to nemusíte dělat sami.
[email protected]:~$ su
Password:
[email protected]:/home/christopher# nano /etc/security/limits.conf
[email protected]:/home/christopher# exit
exit
[email protected]:~$ ulimit -u
20000
Jak můžete vidět, limit pro „christopher“ byl změněn na 20 000.
Jak víte, jaké klíčové slovo použít pro úpravu souboru /etc/security/limits.conf? Zde je tabulka, která obsahuje možná klíčová slova položek a jejich popisy:
Klíčové slovo položky | Popis |
---|---|
jádro | omezuje velikost souboru jádra (kB) |
data | maximální velikost dat (kB) |
fsize | maximální velikost souboru (kB) |
memlock | maximální adresní prostor uzamčeného v paměti (KB) |
nofile | maximální počet otevřených deskriptorů souborů |
rss | maximální velikost rezidentní sady (kB) |
zásobník | maximální velikost zásobníku (kB) |
procesor | maximální čas CPU (MIN) |
nproc | maximální počet procesů |
jako | limit adresního prostoru (kB) |
maxlogins | maximální počet přihlášení pro tohoto uživatele |
maxsyslogins | maximální počet přihlášení do systému |
priorita | priorita spuštění uživatelského procesu |
zámky | maximální počet zámků souborů, které může uživatel držet |
podpis | maximální počet čekajících signálů |
msgqueue | – maximální množství paměti používané frontami zpráv POSIX (bajty) |
pěkné | maximální priorita nice může být zvýšena na hodnoty:[-20, 19] |
rtprio | maximální priorita v reálném čase |
chroot | změňte kořenový adresář na adresář (specifický pro Debian) |
Typ limitu | Popis |
---|---|
tvrdé | pevný limit |
měkké | měkký limit |
– | tvrdý i měkký limit |
Změnit ulimit pro skupiny
Změna zásad skupiny je velmi podobná té, kterou jste viděli v předchozí části, ale zahrnete @
symbol před názvem skupiny.
Zde je příklad, kdy jsem nastavil maximální počet přihlášení pro studenta skupiny na 4 úpravou souboru /etc/security/limits.conf:
@student - maxlogins 4
Závěr
Doufám, že se vám tento rychlý úvod k příkazu ulimit Linux líbil.
Pokud máte nějaké připomínky nebo dotazy, zanechte je níže. Pokud máte nějaké návrhy na témata, která byste rádi viděli, klidně je také zanechte.