In Linux, è possibile modificare la quantità massima di file aperti. È possibile modificare questo numero utilizzando il comando ulimit. Ti garantisce la capacità di controllare le risorse disponibili per la shell o il processo avviato da essa.
Leggi anche: Impostare i limiti dei processi in esecuzione su Linux a livello per utente
In questo breve tutorial vi mostreremo come controllare il limite attuale dei file aperti e delle descrizioni dei file, ma per farlo, è necessario avere l’accesso di root al vostro sistema.
Primo, vediamo come possiamo scoprire il numero massimo di descrittori di file aperti sul tuo sistema Linux.
Trova il limite di file aperti di Linux
Il valore è memorizzato in:
# cat /proc/sys/fs/file-max818354
Il numero che vedrai, mostra il numero di file che un utente può avere aperto per sessione di login. Il risultato potrebbe essere diverso a seconda del vostro sistema.
Per esempio su un mio server CentOS, il limite è stato impostato a 818354, mentre sul server Ubuntu che eseguo a casa il limite di default è stato impostato a 176772.
Se vuoi vedere i limiti hard e soft, puoi usare i seguenti comandi:
Check Hard Limit in Linux
# ulimit -Hn4096
Check Soft Limits in Linux
# ulimit -Sn1024
Per vedere i valori hard e soft per diversi utenti, puoi semplicemente cambiare utente con “su” all’utente che vuoi controllare.
Per esempio:
# su marin$ ulimit -Sn1024
$ ulimit -Hn4096
Come controllare i limiti dei descrittori di file a livello di sistema in Linux
Se stai eseguendo un server, alcune delle tue applicazioni possono richiedere limiti più alti per i descrittori di file aperti. Un buon esempio sono i servizi MySQL/MariaDB o il server web Apache.
È possibile aumentare il limite dei file aperti in Linux modificando la direttiva fs.file-max
del kernel. A tal fine, è possibile utilizzare l’utilità sysctl.
Sysctl è utilizzato per configurare i parametri del kernel in fase di esecuzione.
Per esempio, per aumentare il limite dei file aperti a 500000, puoi usare il seguente comando come root:
# sysctl -w fs.file-max=500000
Puoi controllare il valore corrente dei file aperti con il seguente comando:
$ cat /proc/sys/fs/file-max
Con il comando di cui sopra le modifiche che hai fatto rimarranno attive solo fino al prossimo riavvio. Se vuoi applicarle permanentemente, dovrai modificare il seguente file:
# vi /etc/sysctl.conf
Aggiungi la seguente linea:
fs.file-max=500000
Naturalmente, puoi cambiare il numero secondo le tue esigenze. Per verificare le modifiche di nuovo usa:
# cat /proc/sys/fs/file-max
Gli utenti dovranno fare il logout e il login di nuovo perché le modifiche abbiano effetto. Se vuoi applicare il limite immediatamente, puoi usare il seguente comando:
# sysctl -p
Set User Level Open File limits in Linux
Gli esempi precedenti hanno mostrato come impostare limiti globali, ma potresti voler applicare limiti per utente. A tal fine, come utente root, è necessario modificare il seguente file:
# vi /etc/security/limits.conf
Se sei un amministratore di Linux, ti suggerisco di familiarizzare molto con questo file e con quello che puoi fare. Leggete tutti i commenti in esso, in quanto fornisce grande flessibilità in termini di gestione delle risorse di sistema limitando gli utenti/gruppi su diversi livelli.
Le linee che dovresti aggiungere prendono i seguenti parametri:
<domain> <type> <item> <value>
Ecco un esempio di impostazione di un limite soft e hard per l’utente marin:
## Example hard limit for max opened filesmarin hard nofile 4096## Example soft limit for max opened filesmarin soft nofile 1024
Pensieri finali
Questo breve articolo ti ha mostrato un esempio base di come puoi controllare e configurare limiti globali e a livello utente per il numero massimo di file aperti.
Mentre abbiamo appena grattato la superficie, vi incoraggio caldamente a dare un’occhiata più dettagliata e leggere riguardo a /etc/sysctl.conf e /etc/security/limits.conf e imparare ad usarli. Vi saranno di grande aiuto un giorno.