È importante sapere che esistono due tipi di limiti:
- Un limite rigido è configurabile solo da root. Questo è il valore più alto possibile (limite) per il limite soft.
- Un limite soft può essere impostato da un utente normale. Questo è il limite effettivo in vigore.
Soluzione per una singola sessione
Nella shell impostare il limite soft:
ulimit -Sn 2048
In questo esempio il limite effettivo verrà aumentato a 2048 ma il comando avrà esito positivo solo se il limite rigido (controllo:) ulimit -Hn
è uguale o superiore. Se hai bisogno di valori più alti, aumenta il limite rigido usando uno dei metodi seguenti. I limiti sono impostati per processo e sono ereditati da processi appena generati, quindi qualsiasi cosa tu esegua dopo questo comando nella stessa shell avrà i nuovi limiti.
Modifica del limite rigido in una singola sessione
Questo non è facile perché solo root può cambiare un limite rigido e dopo il passaggio a root devi tornare all'utente originale. Ecco la soluzione con sudo
:
sudo sh -c "ulimit -Hn 9000 ; exec su \"$USER\""
Soluzione a livello di sistema
In Debian e in molti altri sistemi usando pam_limits
puoi impostare i limiti a livello di sistema in /etc/security/limits.conf
e nei file in /etc/security/limits.d
. Il file conf contiene una descrizione. Linee di esempio:
@webadmins hard nofile 16384
@webadmins soft nofile 8192
Ciò imposterà il limite rigido e il limite flessibile predefinito per gli utenti del gruppo webadmins
dopo l'accesso.
Altri limiti
Il valore limite rigido è limitato dal limite globale del valore dei descrittori di file aperti in /proc/sys/fs/file-max
cui è piuttosto elevato per impostazione predefinita nelle moderne distribuzioni Linux. Questo valore è limitato dal NR_OPEN
valore utilizzato durante la compilazione del kernel.
Non esiste una soluzione migliore?
Forse potresti verificare se tutti i *log
file a cui ti alleni tail -f
sono file realmente attivi che devono essere monitorati. È possibile che alcuni di essi siano già chiusi per la registrazione e che sia possibile aprire un numero inferiore di file.