Linux Correggi l'errore troppi file aperti

Linux Correggi l'errore troppi file aperti

Questo tutorial spiega come risolvere l'errore Linux "troppi file aperti".

Dopo aver letto questo articolo capirai la causa dell'errore che stai ricevendo e saprai come risolverlo. Non solo imparerai a correggere l'errore, ma anche altri aspetti importanti dei processi di file del sistema operativo Linux.

Il significato dell'errore "troppi file aperti"

Quando un utente esegue un processo, il processo ha file associati contenenti informazioni sull'utilizzo del file. Ad esempio, i descrittori di file possono informare il kernel come accedere a un file o come gestirlo a un'altra risorsa. Ad esempio, quando usiamo un tubo per reindirizzare un processo a un altro.

Per impostazione predefinita, ogni processo eseguito Linux ha almeno 3 file associati chiamati Descrittori di file: Stdin, stdout e stderr. La loro funzione è mostrata nella tabella seguente.

Descrittore di file Numero Funzione
Stdin 0 Si riferisce al metodo di input della tastiera
Stdout 1 Stampa o reindirizza l'output, si riferisce allo schermo
Stderr 2 Stampa o reindirizza errori, si riferisce allo schermo

Esiste un limite di descrittori di file utenti e processi che possono essere eseguiti contemporaneamente. Quando viene raggiunto il limite e l'utente o il processo tenta di aprire ulteriori descrittori di file, otteniamo il “Troppi errori di file aperti".

Pertanto, la soluzione a questo errore è aumentare il limite dei descrittori di file che un utente o un processo possono aprire.

Correzione dell'errore "troppi file aperti" Linux

Per controllare il limite dei file descrittori per la sessione corrente, eseguire il comando mostrato di seguito.

Ulimit -N

Come puoi vedere sopra, il limite è 1024.

Ora, controlliamo il limite dell'utente eseguendo il seguente comando:

Ulimit -u

Per apprendere il numero di file correnti è possibile utilizzare il comando mostrato nello screenshot seguente.

lsof | wc -l

Il comando mostrato di seguito può essere utilizzato per aumentare il limite dei file del descrittore per risolvere questo errore. Tuttavia, questo potrebbe non funzionare se viene raggiunto il limite specificato nei file di configurazione.

Come puoi vedere, il sistema non ci consente di aumentare il limite. In tal caso, dobbiamo modificare un paio di file.

Nel primo file da modificare, vedrai due tipi di limiti: limiti duri e morbidi:

Il limite duro rappresenta il limite massimo consentito per il limite soft. La modifica del limite hard richiede privilegi.

D'altra parte, il limite soft viene utilizzato dal sistema per limitare tutte le risorse di sistema per l'esecuzione dei processi. Il limite morbido non può essere maggiore del limite duro.

Puoi imparare sia limiti duri che morbidi con i comandi mostrati nella seguente screenshot, dove Ulimit -Sn mostra il limite soft e Ulimit -hn mostra il limite duro.

Innanzitutto, apri il seguente file con privilegi:

sudo nano/etc/sicurezza/limiti.conf

Modifica le righe mostrate di seguito aumentando il limite. Nel mio caso, aumento il limite morbido da 1024 a 2048. Qui, puoi anche modificare il limite duro, se necessario.

Quindi, riavvia il daemon-reexec utilizzando SystemCtl come mostrato di seguito.

Sudo SystemCtl Daemon-Reexec

Apri un nuovo terminale o riavvia la sessione per verificare che le modifiche sono state apportate correttamente e prova a modificare nuovamente l'ulimit eseguendo il comando seguente e modificare il limite per quello specificato in /etc/sicurezza/limiti.conf file.

Ulimit -N 2048

Come puoi vedere sopra, il limite è stato aggiornato correttamente.

Nel caso in cui non funzionasse per te, apri il seguente file con privilegi:

sudo nano/etc/systemd/system.conf

Trova la linea DefaultLimitNofile = e cambia il primo numero prima del colon, aumentando il limite. Nel mio caso l'ho aumentato da 1024 a 2048. Quindi, chiudi ed esci dal file salvando le modifiche.

Inoltre, apri il seguente file con privilegi:

sudo nano/etc/systemd/utente.conf

Trova la stessa riga e modificarla, ripetendo le modifiche apportate in precedenza.

Riavvia nuovamente il demone Reexec usando SystemCtl.

Sudo SystemCtl Daemon-Reexec

Riavvia la sessione e usa il comando seguente, in sostituzione di 2048 con il limite che si desidera impostare e configurare nei file di configurazione:

Ulimit -N 2048

Il comando seguente restituisce il limite per l'intero sistema:

Cat/Proc/sys/fs/file-max

Si modifica il limite di sistema utilizzando il seguente comando:

sudo syscctl -w fs.file-max =

Per rendere permanente la modifica, modifica il seguente file con privilegi:

sudo nano /etc /sysctl.conf

Aggiungi la seguente riga in sostituzione Con il nuovo limite che si desidera impostare:

fs.file-max =

Riavvia per applicare nuove modifiche con il comando di seguito.

sudo syscctl -p

Questo è tutto, dopo aver aumentato l'ulimit, il "Troppi file aperti"L'errore deve essere risolto.

Conclusione

Questo errore può essere risolto facilmente da qualsiasi utente Linux. Linux offre diversi modi per affrontare questo problema, sentiti libero di provare tutti per sbarazzarsi di questo errore. I passaggi sopra descritti sono validi per molte distribuzioni Linux ma eseguiti su Distri basati su Debian. Se sei interessato a conoscere i descrittori di file, abbiamo pubblicato contenuti specifici su questo argomento puoi leggere su questo sito. I descrittori di file sono un componente di base di tutti i sistemi operativi.

Grazie per aver letto questo tutorial spiegando come risolvere l'errore "troppi file aperti" in Linux. Continua a seguirci per altri articoli Linux professionali.