In Linux, puoi modificare la quantità massima di file aperti. Puoi modificare questo numero utilizzando ulimit comando. Ti dà la possibilità di controllare le risorse disponibili per la shell o il processo avviato da essa.
Leggi anche: Imposta i limiti dei processi di esecuzione di Linux a livello per utente
In questo breve tutorial ti mostreremo come controllare il tuo attuale limite di file aperti e descrizioni di file, ma per farlo dovrai avere l'accesso come root al tuo sistema.
Per prima cosa, 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-max 818354
Il numero che vedrai mostra il numero di file che un utente può aver aperto per sessione di accesso. Il risultato potrebbe essere diverso a seconda del tuo sistema.
Ad esempio su un CentOS server del mio, il limite è stato impostato su 818354 , mentre sei su Ubuntu server che eseguo a casa il limite predefinito è stato impostato su 176772 .
Se vuoi vedere i limiti hard e soft, puoi usare i seguenti comandi:
Verifica limite rigido in Linux
# ulimit -Hn 4096
Verifica i limiti morbidi in Linux
# ulimit -Sn 1024
Per visualizzare i valori hard e soft per utenti diversi, puoi semplicemente cambiare utente con "su" all'utente quali limiti vuoi controllare.
Ad esempio:
# su marin $ ulimit -Sn 1024
$ ulimit -Hn 4096
Come controllare i limiti dei descrittori di file a livello di sistema in Linux
Se stai eseguendo un server, alcune delle tue applicazioni potrebbero richiedere limiti più elevati per i descrittori di file aperti. Un buon esempio sono MySQL/MariaDB servizi o Apache server web.
Puoi aumentare il limite di file aperti in Linux modificando la direttiva del kernel fs.file-max
. A tale scopo, puoi utilizzare sysctl utilità.
Sistema viene utilizzato per configurare i parametri del kernel in fase di esecuzione.
Ad esempio, per aumentare il limite di file aperti a 500000 , puoi usare il seguente comando come root:
# sysctl -w fs.file-max=500000
Puoi controllare il valore corrente per i file aperti con il seguente comando:
$ cat /proc/sys/fs/file-max
Con il comando sopra le modifiche che hai apportato rimarranno attive solo fino al prossimo riavvio. Se desideri applicarli in modo permanente, dovrai modificare il seguente file:
# vi /etc/sysctl.conf
Aggiungi la seguente riga:
fs.file-max=500000
Naturalmente, è possibile modificare il numero in base alle proprie esigenze. Per verificare nuovamente le modifiche utilizzare:
# cat /proc/sys/fs/file-max
Gli utenti dovranno disconnettersi e accedere nuovamente affinché le modifiche abbiano effetto. Se vuoi applicare il limite immediatamente, puoi utilizzare il seguente comando:
# sysctl -p
Imposta limiti di file aperti a livello utente in Linux
Gli esempi precedenti hanno mostrato come impostare limiti globali, ma potresti voler applicare limiti per utente. A tale scopo, come utente root, dovrai modificare il seguente file:
# vi /etc/security/limits.conf
Se sei un amministratore Linux, ti suggerisco di acquisire molta familiarità con quel file e cosa puoi fare per esso. Leggi tutti i commenti al suo interno in quanto offre una grande flessibilità in termini di gestione delle risorse di sistema limitando utenti/gruppi a diversi livelli.
Le righe che dovresti aggiungere prendono i seguenti parametri:
<domain> <type> <item> <value>
Ecco un esempio di impostazione di limiti soft e hard per l'utente marin :
## Example hard limit for max opened files marin hard nofile 4096 ## Example soft limit for max opened files marin soft nofile 1024
Pensieri finali
Questo breve articolo ti ha mostrato un esempio di base di come puoi controllare e configurare i limiti globali e a livello di utente per il numero massimo di file aperti.
Anche se abbiamo appena scalfito la superficie, ti consiglio vivamente di dare un'occhiata più dettagliata e leggere riguardo a /etc/sysctl.conf e /etc/security/limits.conf e impara come usarli. Ti saranno di grande aiuto un giorno.