Puoi controllare i limiti flessibili e i limiti rigidi del tuo sistema tramite ulimit -a
comando.
- i limiti flessibili sono semplicemente i limiti attualmente applicati.
- i limiti rigidi contrassegnano il valore massimo che non può essere superato impostando un limite flessibile.
I limiti flessibili possono essere impostati da qualsiasi utente mentre i limiti rigidi sono modificabili solo da root. I limiti sono una proprietà di un processo . Vengono ereditati quando viene creato un processo figlio, quindi i limiti a livello di sistema dovrebbero essere impostati durante l'inizializzazione del sistema negli script di init e i limiti utente dovrebbero essere impostati durante l'accesso dell'utente, ad esempio utilizzando pam_limits
.
Ci sono spesso valori predefiniti impostati all'avvio della macchina. Quindi, anche se puoi reimpostare il tuo ulimit in una singola shell, potresti scoprire che si ripristina al valore precedente al riavvio. Potresti voler grep i tuoi script di avvio per i comandi di esistenza ulimit se vuoi cambiare il default.
Se la limitazione era 1024, significa che tu/il processo puoi aprire un massimo di 1024 file. se superi questo limite significa open
, pipe
e dup
le chiamate di sistema falliranno:
RLIMIT_NOFILE:
Specifica un valore maggiore di uno del numero massimo descrittore di file che può essere aperto da questo processo. Tentativi (
open(2)
,pipe(2)
,dup(2)
, ecc.) per superare questo limite restituisce l'erroreEMFILE
.
È un numero di descrittori di file aperti per processo . Possono fare tutti riferimento allo stesso file oa file diversi.
Puoi vedere i limiti attuali con ulimit -a
nella shell, o programmaticamente con getrlimit
. I limiti a livello di sistema sono impostati in /etc/security/limits.conf
.
Il modello a oggetti del filesystem su Linux è:
file descriptor -> file description -> dentry -> inode
- descrittore di file è il numero intero utilizzato dall'applicazione.
- descrizione del file è la struttura dei dati del kernel a cui uno o più descrittori di file fare riferimento a.
- dentatura è il nome del file. Un file può avere molti nomi (hard link).
- inode è il contenuto del file.
dup
crea un nuovo descrittore di file con la stessa descrizione del file.open
crea un nuovo descrittore di file e una descrizione del file.