A folyamatok idő- és memóriahasználatának korlátozása Linuxban
Az timeout szkript egy hasznos erőforrás-figyelő program a folyamatok idő- és memóriafogyasztásának korlátozására Linuxban. Lehetővé teszi a programok irányított futtatását, valamint az idő- és memóriakorlátok érvényesítését, a program leállítását ezen paraméterek megsértése esetén.
Nincs szükség telepítésre, egyszerűen hajtsa végre a parancsot az argumentumokkal együtt a timeout programmal, és figyeli a parancs memóriáját és időfelhasználását, megszakítja a folyamatot, ha túllép a korlátokon, és értesíti Önt az előre meghatározott üzenet.
A szkript futtatásához telepíteni kell a Perl 5-öt a Linux rendszerére, és a /proc fájlrendszert fel kell szerelni.
A Linux rendszeren a Perl telepített verziójának ellenőrzéséhez futtassa a következő parancsot.
perl -v
Ezután klónozza az timeout tárolót a rendszerére a git paranccsal, majd lépjen be a helyi tárolóba a cd paranccsal, és hívja meg a szokásos Linux-parancsként.
cd ~/bin
git clone https://github.com/pshved/timeout.git
cd timeout
Most nézzük meg, hogyan működik az timeout szkript.
Alap memóriakorlátozás (100M virtuális memória):
Ez az első példa bemutatja, hogyan korlátozható egy folyamat memóriahasználata 100M virtuális memóriára a -m
jelző használatával. A memória alapértelmezett mértékegysége kilobyte.
Itt a stress-ng parancs 4 virtuális memória stresszort (VMS) futtat, amelyek együttesen a rendelkezésre álló memória 40%-át használják 10 percig. Így minden stressz okozó a rendelkezésre álló memória 10%-át használja.
./timeout -m 100000 stress-ng --vm 4 --vm-bytes 40% -t 10m
Figyelembe véve a fenti timeout parancs kimenetét, a stress-ng worker folyamatok mindössze 1,16 másodperc után leálltak. Ennek az az oka, hogy a VMS együttes memóriafogyasztása (438660 kilobájt) nagyobb, mint a stress-ng és gyermeke számára engedélyezett virtuális memóriahasználat folyamatokat.
A folyamat alapvető időkorlátja:
A folyamat időkorlátozásának engedélyezéséhez használja a -t
jelzőt az ábrán látható módon.
./timeout -t 4 stress-ng --vm 4 --vm-bytes 40% -t 10m
A fenti példában, amikor a stress-ng CPU+SYS idő meghaladja a 4 meghatározott értéket, a munkafolyamatok leállnak.
Korlátozza mind az időt, mind a folyamat memóriáját
Az alábbiak szerint egyszerre korlátozhatja a memória és az idő mennyiségét.
./timeout -t 4 -m 100000 stress-ng --vm 4 --vm-bytes 40% -t 10m
Az időtúllépés néhány speciális beállítást is támogat, mint például a ---detect-hangups
, amely lehetővé teszi a hívásmegszakítás észlelését.
./timeout --detect-hangups -m 100000 stress-ng --vm 4 --vm-bytes 40% -t 10m
Az RSS (resident set size) memóriakorlátot a --memlimit-rss
vagy a -s
kapcsolóval figyelheti. .
./timeout -m 100000 -s stress-ng --vm 4 --vm-bytes 40% -t 10m
Ezenkívül egy folyamat kilépési kódjának vagy jel+128-as visszaadásához használja a --confess
vagy a -c
opciót az ábrán látható módon.
./timeout -m 100000 -c stress-ng --vm 4 --vm-bytes 40% -t 10m
További információkért és használati példákért tekintse meg az timeout Github-tárat: https://github.com/pshved/timeout.
Hasonlóan hasznosnak találhatja a következő kapcsolódó cikkeket is:
- Hogyan lehet megtalálni a 15 legnépszerűbb folyamatot memóriahasználat alapján a „legfeljebb” kötegelt módban
- CPUTool – Korlátozza és szabályozza a Linux bármely folyamatának CPU-használatát
- Hogyan lehet korlátozni egy folyamat CPU-használatát Linuxban a CPULimit eszközzel
Az timeout szkript egy egyszerű erőforrás-figyelő program, amely alapvetően korlátozza a Linux folyamatainak idő- és memóriafelhasználását. Az alábbi megjegyzés űrlapon keresztül visszajelzést küldhet nekünk az timeout szkriptről.