Hvordan begrense tid og minnebruk av prosesser i Linux
Timeout-skriptet er et nyttig ressursovervåkingsprogram for å begrense tid og minneforbruk for prosesser i Linux. Den lar deg kjøre programmer under kontroll, og håndheve tids- og minnegrenser, og avslutte programmet ved brudd på disse parameterne.
Ingen installasjon nødvendig, bare utfør en kommando sammen med argumentene ved å bruke timeout-programmet, og det vil overvåke kommandoens minne og tidsforbruk, avbryte prosessen hvis den går utenfor grensene, og varsle deg med det forhåndsdefinerte beskjed.
For å kjøre dette skriptet må du ha Perl 5 installert på Linux-systemet og /proc-filsystemet montert.
For å sjekke den installerte versjonen av Perl på Linux-systemet ditt, kjør følgende kommando.
perl -v
Deretter kloner du timeout-depotet til systemet ditt ved å bruke git-kommandoen, og flytt deretter inn i det lokale depotet ved å bruke cd-kommandoen og påkaller det som en vanlig Linux-kommando.
cd ~/bin
git clone https://github.com/pshved/timeout.git
cd timeout
La oss nå se på hvordan timeout-skriptet fungerer.
Grunnleggende minnebegrensning (100M virtuelt minne):
Dette første eksemplet viser hvordan du begrenser minnebruken til en prosess til 100M virtuelt minne, ved å bruke -m
-flagget. Standardenheten for minne er i kilobyte.
Her kjører stress-ng-kommandoen 4 virtuelle minnestressorer (VMS) som kombineres for å bruke 40 % av det tilgjengelige minnet i 10 minutter. Dermed bruker hver stressor 10 % av tilgjengelig minne.
./timeout -m 100000 stress-ng --vm 4 --vm-bytes 40% -t 10m
Med tanke på utdataene fra timeout-kommandoen ovenfor, ble stress-ng-arbeidsprosessene avsluttet etter bare 1,16 sekunder. Dette er fordi det kombinerte minneforbruket til VMS (438660 kilobyte) er større enn tillatt bruk av virtuelt minne for stress-ng og dets underordnede prosesser.
Grunnleggende tidsbegrensning av prosessen:
For å aktivere tidsbegrensning av prosessen, bruk -t
-flagget som vist.
./timeout -t 4 stress-ng --vm 4 --vm-bytes 40% -t 10m
I eksemplet ovenfor, når stress-ng CPU+SYS-tiden overskrider den definerte verdien på 4, blir arbeidsprosessene drept.
Begrenser både tid og prosessminne
Du kan også begrense både minne og tid samtidig som følger.
./timeout -t 4 -m 100000 stress-ng --vm 4 --vm-bytes 40% -t 10m
Tidsavbrudd støtter også noen avanserte alternativer som --detect-hangups
, som muliggjør gjenkjenning av oppheng.
./timeout --detect-hangups -m 100000 stress-ng --vm 4 --vm-bytes 40% -t 10m
Du kan overvåke RSS (resident set size) minnegrense ved å bruke --memlimit-rss
- eller -s
-bryteren .
./timeout -m 100000 -s stress-ng --vm 4 --vm-bytes 40% -t 10m
I tillegg, for å returnere utgangskoden eller signalet+128 for en prosess, bruk --confess
eller -c
alternativet som vist.
./timeout -m 100000 -c stress-ng --vm 4 --vm-bytes 40% -t 10m
For mer informasjon og brukseksempel, se timeout Github-depotet: https://github.com/pshved/timeout.
Du kan også finne disse følgende relaterte artiklene like nyttige:
- Hvordan finne de 15 beste prosessene etter minnebruk med "topp" i batchmodus
- CPUTool – Begrens og kontroller CPU-bruk av enhver prosess i Linux
- Hvordan begrense CPU-bruk av en prosess i Linux med CPULimit Tool
Timeout-skriptet er et enkelt ressursovervåkingsprogram som i hovedsak begrenser tids- og minneforbruket til prosesser i Linux. Du kan gi oss tilbakemelding om timeout-skriptet via kommentarskjemaet nedenfor.