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:

  1. Hvordan finne de 15 beste prosessene etter minnebruk med "topp" i batchmodus
  2. CPUTool – Begrens og kontroller CPU-bruk av enhver prosess i Linux
  3. 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.