I Linux kan du ændre det maksimale antal åbne filer. Du kan ændre dette antal ved at bruge kommandoen ulimit. Den giver dig mulighed for at kontrollere de ressourcer, der er tilgængelige for shell’en eller den proces, der startes af den.
Læs også: I denne korte vejledning vil vi vise dig, hvordan du kan kontrollere din nuværende grænse for åbne filer og filbeskrivelser, men for at gøre det, skal du have root-adgang til dit system.
Først skal vi se, hvordan vi kan finde ud af det maksimale antal åbne filbeskrivelser på dit Linux-system.
Find Linux Open File Limit
Værdien er gemt i:
# cat /proc/sys/fs/file-max818354
Tallet, du vil se, viser antallet af filer, som en bruger kan have åbnet pr. login-session. Resultatet kan være forskelligt afhængigt af dit system.
For eksempel var grænsen på en af mine CentOS-servere indstillet til 818354, mens den på Ubuntu-serveren, som jeg kører derhjemme, var standardgrænsen indstillet til 176772.
Hvis du vil se de hårde og bløde grænser, kan du bruge følgende kommandoer:
Check Hard Limit in Linux
# ulimit -Hn4096
Check Soft Limits in Linux
# ulimit -Sn1024
For at se de hårde og bløde værdier for forskellige brugere, kan du blot skifte bruger med “su” til den bruger, hvis grænser du vil tjekke.
For eksempel:
# su marin$ ulimit -Sn1024
$ ulimit -Hn4096
Sådan tjekker du grænser for systembrede fildeskriptorer i Linux
Hvis du kører en server, kan nogle af dine programmer kræve højere grænser for åbnede fildeskriptorer. Et godt eksempel på sådanne er MySQL/MariaDB-tjenester eller Apache-webserveren.
Du kan øge grænsen for åbnede filer i Linux ved at redigere kernedirektivet fs.file-max
. Til det formål kan du bruge værktøjet sysctl.
Sysctl bruges til at konfigurere kerneparametre på køretid.
For eksempel kan du for at øge grænsen for åbne filer til 500000 bruge følgende kommando som root:
# sysctl -w fs.file-max=500000
Du kan kontrollere den aktuelle værdi for åbnede filer med følgende kommando:
$ cat /proc/sys/fs/file-max
Med ovenstående kommando forbliver de ændringer, du har foretaget, kun aktive indtil den næste genstart. Hvis du ønsker at anvende dem permanent, skal du redigere følgende fil:
# vi /etc/sysctl.conf
Føj følgende linje til:
fs.file-max=500000
Selvfølgelig kan du ændre tallet efter dine behov. For at bekræfte ændringerne igen skal du bruge:
# cat /proc/sys/fs/file-max
Brugerne skal logge ud og logge ind igen, for at ændringerne kan træde i kraft. Hvis du ønsker at anvende begrænsningen med det samme, kan du bruge følgende kommando:
# sysctl -p
Set User Level Open File limits in Linux
De ovenstående eksempler viste, hvordan du indstiller globale begrænsninger, men du ønsker måske at anvende begrænsninger på brugerbasis. Til det formål skal du som bruger root redigere følgende fil:
# vi /etc/security/limits.conf
Hvis du er Linux-administrator, vil jeg foreslå dig, at du bliver meget fortrolig med denne fil, og hvad du kan gøre ved den. Læs alle kommentarerne i den, da den giver stor fleksibilitet med hensyn til styring af systemressourcer ved at begrænse brugere/grupper på forskellige niveauer.
De linjer, du skal tilføje, tager følgende parametre:
<domain> <type> <item> <value>
Her er et eksempel på indstilling af en blød og hård grænse for brugeren marin:
## Example hard limit for max opened filesmarin hard nofile 4096## Example soft limit for max opened filesmarin soft nofile 1024
Sluttanker
Denne korte artikel viste dig et grundlæggende eksempel på, hvordan du kan kontrollere og konfigurere globale og brugerniveau-grænser for det maksimale antal åbnede filer.
Mens vi kun skrabede på overfladen, vil jeg stærkt opfordre dig til at kigge og læse mere detaljeret om /etc/sysctl.conf og /etc/security/limits.conf og lære at bruge dem. De vil være til stor hjælp for dig en dag.