2010-06-24 25 views
20

Quando ho provato a installare un software su RedHat EL5, ho ricevuto l'errore che il valore previsto di nofile morbido/rigido è 4096 mentre il valore predefinito è 1024. Sono riuscito ad aumentare il numero, ma non so quali siano i parametri. Si stanno riferendo al soft link e all'hub link?Cosa significa "soft/hard nofile" su Linux

Il modo lo cambio è:

A) modificare il /etc/security/limits.conf

user soft nofile 5000 
user hard nofile 6000 

B) modificare il /etc/pam.d/system-auth

session required /lib/security/$ISA/pam_limits.so 

C) modificare /etc/pam.d/login

session required pam_limits.so 

Dopo aver effettuato la modifica (passando a root). Sembra che devo riavviare la macchina per farlo funzionare. Ma alcuni post online dicono che dovrebbe avere effetto subito dopo aver apportato la modifica. Apprezzeremmo se qualcuno potesse chiarirlo.

risposta

31

Questi sono: un limite "soft" e un limite "hard" per il numero di file che un processo potrebbe aver aperto in un momento. Entrambi limitano la stessa risorsa (nessuna relazione con hard link o altro). La differenza è: il limite flessibile può essere modificato in seguito, fino al valore limite rigido, dal processo in esecuzione con questi limiti e il limite rigido può essere ridotto solo - il processo non può assegnarsi più risorse aumentando il limite rigido (eccetto i processi in esecuzione con i privilegi di superutente (come root)).

limiti simili possono essere impostati per altre risorse di sistema: memoria di sistema, tempo di CPU, ecc Vedere le setrlimit(2) pagina di manuale o la descrizione della della shell ulimit build-in di comando (ad esempio nella pagina di manuale bash(1)

+4

Un'eccezione minore è che i processi in esecuzione come 'root' possono aumentare il loro limite rigido e il loro limite flessibile. –

+0

Grazie per avermelo ricordato. Ho aggiornato la mia risposta. –

4

. Non è richiesto il riavvio, ma /etc/security/limits.conf viene elaborato solo quando viene eseguito /lib/security/pam_limits.so, che è al momento dell'accesso, e i valori sono ereditati dai processi figli. Dopo un nuovo accesso, tutto sotto quell'accesso erediterà i valori specificati

+0

Grazie per il chiarimento –

1

A titolo aggiuntivo, alcune distro includono /etc/security/limits.d dove "snippet" di configurazione limite le azioni possono essere piazzate. È possibile creare file di questo tipo:

$ ll /etc/security/limits.d/ 
-rw-r--r--. 1 root root 191 Aug 18 10:26 90-nproc.conf 
-rw-r--r-- 1 root root 70 Sep 29 12:54 90-was-filedesc.conf 

Con i file che contiene tutto ciò che i limiti che si desidera impostare:

$ more /etc/security/limits.d/90-nproc.conf 
# Default limit for number of user's processes to prevent 
# accidental fork bombs. 
# See rhbz #432903 for reasoning. 

*   soft nproc  1024 
root  soft nproc  unlimited 

$ more /etc/security/limits.d/90-was-filedesc.conf 
root  hard nofile 20000 

Trovo usando questo metodo per gestire questi tipi di override molto più pulito di pasticciare con /etc/security/limits.conf.

Inoltre, se si desidera impostare sia soft/hard allo stesso valore, è possibile utilizzare - come tipo.

$ more /etc/security/limits.d/90-was-filedesc.conf 
root  -  nofile 20000