web-dev-qa-db-fra.com

Que signifie "nofile soft / hard" sous Linux

Lorsque j'ai essayé d'installer un logiciel sur RedHat EL5, j'ai eu l'erreur que la valeur attendue du nofile soft/hard est 4096 alors que la valeur par défaut est 1024. J'ai réussi à augmenter le nombre, mais je ne sais pas quels sont les paramètres. Se réfèrent-ils au lien logiciel et au lien matériel?

La façon dont je le change est:

A) modifiez le fichier /etc/security/limits.conf

user soft nofile 5000
user hard nofile 6000

B) modifiez le /etc/pam.d/system-auth

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

C) modifier /etc/pam.d/login

session required pam_limits.so

Après avoir effectué le changement (en passant à root). Il semble que je doive redémarrer la machine pour la rendre effective. Mais certains articles en ligne disent que cela devrait entrer en vigueur juste après avoir effectué le changement. J'apprécierais si quelqu'un pouvait le clarifier.

20
Frank Fu

Ce sont: une limite "douce" et "dure" pour le nombre de fichiers qu'un processus peut avoir ouvert à la fois. Les deux limitent la même ressource (aucune relation avec les liens durs ou quoi que ce soit). La différence est la suivante: la limite logicielle peut être modifiée ultérieurement, jusqu'à la valeur de la limite matérielle, par le processus s'exécutant avec ces limites et la limite matérielle ne peut être abaissée que - le processus ne peut pas se donner plus de ressources en augmentant la limite matérielle (sauf les processus exécutés avec des privilèges de superutilisateur (en tant que root)).

Des limites similaires peuvent être définies pour d'autres ressources système: mémoire système, temps CPU, etc. Voir la page de manuel setrlimit(2) ou la description de la commande intégrée ulimit de votre Shell (par exemple dans le bash(1) page de manuel.

34
Jacek Konieczny

Aucun redémarrage n'est requis, mais /etc/security/limits.conf n'est traité que lorsque /lib/security/pam_limits.so s'exécute, au moment de la connexion, et les valeurs sont héritées par les processus enfants. Après une nouvelle connexion, tout ce qui se trouve sous cette connexion héritera des valeurs spécifiées.

4
Chris

En complément, certaines distributions incluent /etc/security/limits.d où des "extraits" de configurations limites peuvent être placés. Vous pouvez créer des fichiers comme celui-ci:

$ 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

Avec des fichiers contenant les limites que vous souhaitez définir:

$ 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

Je trouve que l'utilisation de cette méthode pour gérer ces types de remplacements est beaucoup plus propre que le nettoyage avec /etc/security/limits.conf.

De plus, si vous souhaitez définir à la fois soft/hard sur la même valeur, vous pouvez utiliser le - comme type.

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