Løsning:Øk grensen
Linux-systemer pålegger begrensninger på antall åpne filer som en bruker kan få tilgang til samtidig. Feilen "for mange åpne filer" oppstår når antallet åpne filer overskrider disse grensene. Øk grensen for åpne filer for å løse dette problemet.
Rediger den tilsvarende `/etc/security/limits.conf`-filen avhengig av om du prøver å bruke endringen globalt eller til en spesifikk bruker.
Hvis du prøver å øke grensen for hver bruker, rediger `/etc/security/limits.conf`:
```
sudo nano /etc/security/limits.conf
```
For å endre grensen for en bestemt bruker som heter "brukernavn", rediger deres tilsvarende `/etc/security/limits.d`-fil:
```
sudo nano /etc/security/limits.d/brukernavn.conf
```
Finn og rediger "nofile"-parametrene i den respektive filen for å sette de nye grensene:
```
* myk nofil 65535
* hard nofil 65535
```
Her er hva disse parameterne gjør:
- "myk" setter en myk grense som kan overstyres midlertidig under spesielle omstendigheter.
- "hard" setter en hard grense som ikke kan overskrides.
Den numeriske verdien ("65535" i eksemplet) indikerer ønsket maksimalt antall åpne filer.
Etter å ha lagret endringene og avsluttet redigeringsprogrammet, kjør følgende kommandoer for å bruke de nye grensene. (Erstatt "brukernavn" med målbrukeren din hvis du endrer en bestemt bruker):
```
sudo ulimit -n 65535 (For gjeldende økt)
```
```
sudo sysctl -w fs.file-max=65535 (For hver økt og utover)
```
Sjekk filgrenseendringene med kommandoen:
```
ugrense -n
```
Hvis du får den økte grensen som utdata, er endringen effektiv og feilen "for mange åpne filer" bør løses.
Alternativ løsning:Lukk ubrukte filer
Hvis det er upraktisk å øke filgrensen, bør du vurdere å lukke unødvendige åpne filer for å unngå å nå grensen. Se etter unødvendige bakgrunnsprosesser eller applikasjoner som bruker filbeskrivelser.
Kjør følgende kommando for å få en oversikt over åpne filhåndtak:
```
lsof -Fn | grep slettet
```
Se etter eventuelle unødvendige håndtak og avslutt de tilsvarende prosessene for å frigjøre dem.