Hvordan sette grenser for prosesser som kjører bruker i Linux


En av Linuxs skjønnheter er at du kan kontrollere nesten alt om den. Dette gir en systemadministrator god kontroll over systemet sitt og bedre utnyttelse av systemressursene.

Selv om noen kanskje aldri har tenkt på å gjøre dette, er det viktig å vite at i Linux kan du begrense hvor mye ressurs en enkelt bruker kan bruke og hvor lenge.

Les også: Hvordan øke antall åpne filer i Linux

I dette korte emnet vil vi vise deg hvordan du begrenser antall prosesser som startes av brukeren og hvordan du sjekker gjeldende grenser og endrer dem.

Før vi går videre er det to ting vi må påpeke:

  1. Du trenger root-tilgang til systemet ditt for å endre brukergrensene
  2. Du må være ekstremt forsiktig hvis du planlegger å endre disse grensene

For å sette opp brukergrenser, må vi redigere følgende fil:


/etc/security/limits.conf

Denne filen brukes til å bruke ulimit opprettet av pam_module.

Filen har følgende syntaks:

<domain> <type> <item> <value>

Her vil vi stoppe for å diskutere hvert av alternativene:

  • Domene – dette inkluderer brukernavn, grupper, guideområder osv
  • Type – myke og harde grenser
  • Vare – elementet som vil være begrenset – kjernestørrelse, filstørrelse,  nproc osv.
  • Verdi – dette er verdien for den gitte grensen

Et godt eksempel på en grense er:

@student          hard           nproc                20

Linjen ovenfor setter en hard grense på maksimalt 20 prosesser for "student"-gruppen.

Hvis du vil se grensene for en bestemt prosess kan du ganske enkelt “cat” grensefilen som dette:


cat /proc/PID/limits

Der PID er den faktiske prosess-ID-en, kan du finne ut prosess-ID ved å bruke kommandoen ps. For mer detaljert forklaring, les artikkelen vår som sier - Finn kjørende Linux-prosesser og angi prosessgrenser per brukernivå

Så her er et eksempel:


cat /proc/2497/limits
Eksempelutgang

Limit                     Soft Limit           Hard Limit           Units     
Max cpu time              unlimited            unlimited            seconds   
Max file size             unlimited            unlimited            bytes     
Max data size             unlimited            unlimited            bytes     
Max stack size            8388608              unlimited            bytes     
Max core file size        0                    unlimited            bytes     
Max resident set          unlimited            unlimited            bytes     
Max processes             32042                32042                processes 
Max open files            1024                 4096                 files     
Max locked memory         65536                65536                bytes     
Max address space         unlimited            unlimited            bytes     
Max file locks            unlimited            unlimited            locks     
Max pending signals       32042                32042                signals   
Max msgqueue size         819200               819200               bytes     
Max nice priority         0                    0                    
Max realtime priority     0                    0                    
Max realtime timeout      unlimited            unlimited            us   

Alle linjene er ganske selvforklarende. Men hvis du ønsker å finne flere innstillinger du kan legge inn i filen limits.conf, kan du ta en titt på håndboken som følger med her.

Hvis du har spørsmål eller kommentarer, ikke nøl med å sende dem i kommentarfeltet nedenfor.