“ulimit” er en interessant Linux shell-kommando, der kan indstille eller rapportere ressourcegrænsen for den aktuelle bruger.
På grund af dens natur kræver det naturligvis admin-adgang at arbejde med “ulimit” (når værdien ændres). Desuden vil den kun fungere på systemer, der tillader kontrol via shell’en. Lad os uden videre komme i gang med “ulimit”!
Fyr op i terminalen og kør følgende kommando:
Det viser en fejl, ikke sandt? Hvorfor? Det er fordi “ulimit” ikke er en separat binær fil. Den er indlejret i selve shell’en.
Basisk brug
Kør bare kommandoen i sig selv.
Som det fremgår af outputtet, har den aktuelle bruger “ubegrænset” adgang til ressourcerne. Det betyder i bund og grund, at den aktuelle bruger kan forbruge alle de ressourcer, som det aktuelle system understøtter.
For at få rapporten i detaljer skal du tilføje “-a”-flaget i slutningen. Dette vil udskrive alle ressourcebegrænsninger for den aktuelle bruger.
Bemærk: Der findes 2 typer ressourcebegrænsning: “hårde” og “bløde”. Hård ressourcebegrænsning definerer den fysiske grænse, som brugeren kan nå. Den “bløde” ressourcegrænse kan håndteres af brugeren. Dens værdi kan gå op til den “hårde” grænse.
Systemressourcerne defineres i en konfigurationsfil, der ligger på “/etc/security/limits.conf”. “ulimit” vil, når den kaldes, rapportere disse værdier.
Kontrol af forskellige grænser for en bruger
Hvad med visning af de enkelte parametre? Kald derefter “ulimit” med de respektive parametre.
Bemærk: Ikke alle disse kommandoer vil fungere, da ikke alle systemer indeholder funktionerne.
For at kontrollere værdien af max “core file size” skal du bruge flaget “-c”. Resultatet vil blive vist i blokke.
For max “data seg size” (i kilobyte), skal du bruge flaget “-d”.
In scheduling, priority matters. Tjek den maksimale planlægningsprioritet for den aktuelle bruger ved hjælp af “-e”-flaget.
For at tjekke den maksimale stakstørrelse for den aktuelle bruger, skal du bruge flaget “-s”.
For at få oplyst det maksimale antal brugerprocesser skal du bruge flaget “-u”.
For det maksimale antal tråde skal du bruge flaget “-T”.
For at få størrelsen på den virtuelle hukommelse skal du bruge følgende.
Lad os tjekke størrelsen af socketbufferen!
Dette er en interessant en af slagsen. Følgende kommando vil rapportere den tid, som hver proces har lov til at køre i.
Fildeskriptorer er en anden interessant del af Linux-økosystemet. Hvis du vil tjekke, hvor mange fildeskriptorer en proces kan have, skal du køre følgende:
For den komplette liste over “ulimit”-flagene kan du se hjælpesiden for “ulimit”.
Sæt værdier
Hertil har vi set, hvordan vi kan kontrollere værdierne for ressourcegrænserne for det aktuelle system. Nu er det tid til at se, hvordan du manuelt ændrer disse værdier.
Bemærk: For at ændre den “hårde” grænse kræver det administratoradgang, dvs. “root”-tilladelse. Sørg for ikke at ødelægge tingene!
Vi nævnte filen “limits.conf”, ikke sandt? Det er kernen, der DEFINERER alle de grænser, der skal gælde for brugerne.
Som det fremgår af filen, skal hver post følge følgende struktur.
Den del “domæne” kan være en hvilken som helst af disse værdier.
- En bestemt bruger
- En gruppe
- Vildtegn (* og %)
Den “type”-del kan have følgende værdier.
- “soft” (til implementering af bløde grænser)
- “hard” (til implementering af hårde grænser)
Næste del, “item”-delen. Listen over tilgængelige muligheder er ret lang! Her er nogle af de interessante.
- core: Core-filstørrelse (i KB).
- data: Max. datastørrelse (i KB)
- fsize: Max. filstørrelse (i KB).
- memlock: Max locked-in-memory address space (i KB).
- nofile: Max locked-in-memory address space (i KB).
- nofile: Max antal fildeskriptorer
- stack: Max størrelse af stakken (i KB).
- cpu: Maksimal CPU-tid (i MIN).
- maxlogins: Maksimal CPU-tid (i MIN).
- maxlogins: Maksimalt antal logins for den aktuelle bruger/gruppe
- prioritet: Maksimalt antal logins for den aktuelle bruger/gruppe
- prioritet: Indstil prioriteten for brugerens processer
- rtprio: Indstil prioriteten for brugerens processer
- rtprio:
Sæt en heltalsværdi i feltet “value”. Bemærk, at enheden for hvert felt er forbundet med værdien af “item”-delen.
Ændringerne træder i kraft, når du afslutter og logger ind igen på den tilknyttede brugerkonto.
For uddybende oplysninger om konfigurationsfilen “limits.conf” skal du se dens man-side.