Come configurare il limite del file aperto di processo di un utente?


8

Il limite predefinito del file aperto per processo è 1024 su - diciamo - Linux. Per alcuni demoni questo non è abbastanza. Pertanto, la domanda: come modificare il limite di file aperto per un utente specifico?

Risposte:


16

Su Linux è possibile configurarlo tramite limits.conf, ad esempio tramite

# cd /etc/security
# echo debian-transmission - nofile 8192 > limits.d/transmission.conf

(che imposta sia il limite hard che soft per i processi avviati dall'utente debian-transmission su 8192)

Puoi verificare la modifica tramite:

# sudo -u debian-transmission bash -c "ulimit -a"
[..]
open files                      (-n) 8192
[..]

Se un demone è già in esecuzione, deve essere riavviato in modo tale da raccogliere il nuovo limite. Nel caso in cui il daemon venga avviato manualmente da una sessione utente, l'utente deve accedere nuovamente per ottenere il nuovo limite.

In alternativa, puoi anche specificare ulteriori limiti direttamente /etc/security/limits.conf, ovviamente - ma preferisco l' .dapproccio alla directory per una migliore manutenibilità.

Per applicare diversi limiti soft / hard, utilizzare due voci, ad es

debian-transmission soft nofile 4096
debian-transmission hard nofile 8192

(logica alla base di questo: il valore software viene impostato dopo l'accesso dell'utente, ma a un processo utente è consentito aumentare il limite fino al limite rigido)

La configurazione limits.conf/ limits.dè usata da pam_limits.so, che è abilitato di default sulle attuali distribuzioni Linux.

Relazionato

Esiste anche un limite a livello di sistema su Linux /proc/sys/fs/file-max:

Questo file definisce un limite a livello di sistema sul numero di file aperti per tutti i processi.

Ad esempio l'impostazione predefinita su Ubuntu 10.04:

$  cat /proc/sys/fs/file-max
786046

Lo pseudo file /proc/sys/fs/file-nrfornisce ulteriori informazioni, ad es

$ cat /proc/sys/fs/file-nr
1408    0   786046

il numero di handle di file allocati (ovvero il numero di file attualmente aperti); il numero di handle di file gratuiti; e il numero massimo di handle di file

Pertanto, da un lato, potrebbe anche essere necessario regolare il file-maxlimite a livello di sistema , nel caso in cui sia molto piccolo e / o il sistema sia già molto carico. D'altra parte, il solo aumento file-maxnon è sufficiente, perché non influenza i limiti soft / hard imposti dal meccanismo pam_limits.

Per modificare file-maxdalla riga di comando (non è necessario il riavvio):

# sysctl -w fs.file-max=786046

Per modifiche permanenti aggiungere fs.file-max=786046a /etc/sysctl.confo /etc/sysctl.d.

Il limite superiore fs.file-maxè registrato in fs.nr_open. Ad esempio, (di nuovo) su Ubuntu 10.04:

$ sysctl -n fs.nr_open
1048576

(che è 1024 * 1024)

Questo sistema è anche configurabile.


1
Grazie per le ultime informazioni - mi stavo grattando la testa cercando di capire perché non potevo impostare un limite di nofilo utente superiore a 1048576 in /etc/security/limits.conf
Liczyrzepa
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.