les modifications dans /etc/security/limits.conf nécessitent-elles un redémarrage?

144

Les changements dans /etc/security/limits.confnécessitent-ils un redémarrage avant de prendre effet?

Comme si j'avais un script qui fixe les limites suivantes /etc/security/limits.conf, faut-il redémarrer le système pour que ces limites prennent effet?

* hard nofile 94000
* soft nofile 94000
* hard nproc 64000
* soft nproc 64000
Alexej Magura
la source
2
la déconnexion devrait suffire
UVV
Editez le fichier /etc/security/limits.d/90-nproc.conf et redémarrez votre système

Réponses:

108

Non, mais vous devez fermer toutes les fenêtres de sessions actives. Ils se souviennent encore des anciennes valeurs. En d'autres termes, déconnectez-vous et reconnectez-vous. Chaque nouvelle session distante ou chaque shell sécurisé local prend en compte les modifications des limites .

Slyx
la source
17
Que se passe-t-il si je veux définir les limites pour un utilisateur qui n'a pas de nom d'utilisateur, comme si je voulais définir la nofilelimite 94000pour l' mongodbutilisateur? Comment ai-je pu le faire sans redémarrage? Aurais-je juste besoin de redémarrer le mongodbservice?
Alexej Magura
2
@AlexejMagura Vous pouvez modifier les limites des processus en cours d'exécution avec la prlimitcommande.
Bratchley
7
@ Gilles, merci pour les précisions, j'ai modifié ma réponse pour éviter toute ambiguïté. Cependant, le démarrage d'un nouveau service à l'aide sudo service mongodb restartest suffisant pour permettre au service de s'exécuter avec les nouvelles valeurs limites.
Slyx
6
Si vous utilisez Ubuntu et que mongodb est démarré avec précision, la modification de ces limites n’affectera pas mongodb. Comme vous ne pouvez upstartpas lire / etc / security config bugs.launchpad.net/ubuntu/+source/upstart/+bug/938669, vous devez définir la limitstrophe dans son fichier de configuration upstart.
HVNSweeting
5
C'est un autre problème. upstartde par leur conception, ignore les limites définies dans /etc/security/limits.conf.
Slyx
35

Appliquez les modifications directement à un processus en cours d'exécution si vous avez installé prlimit (fourni avec util-linux-2.21)

prlimit --pid <pid> --<limit>=<soft>:<hard>

par exemple

prlimit --pid 12345 --nofile=1024:2048

Se référer ici

RAM
la source
29

Pour définir temporairement la limite de fichiers ouverts pour l'utilisateur avec lequel vous êtes actuellement connecté (par exemple, 'root'): Vous pouvez également utiliser la ulimitcommande pour modifier les valeurs de votre shell actuel. Cependant, les limites strictes ne peuvent être ajustées que si vous êtes root.

Exemple:

# ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 62449
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 1024
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

Pour changer le nofileà 94000 , vous pouvez le faire:

ulimit -n 94000
Boogy
la source
15

Les limites sont héritées d'un processus parent vers ses processus enfants. Les processus exécutés en tant que root peuvent modifier les limites de manière arbitraire. d'autres processus ne peuvent pas augmenter les limites strictes. Ainsi, les limites strictes définies par le processus de connexion affectent tous les processus d'une session.

Si vous changez /etc/security/limits.conf, cela affectera toutes les nouvelles sessions et processus de ces nouvelles sessions. Cela n'affectera pas les processus en cours d'exécution, ni les processus démarrés par des processus déjà en cours d'exécution.

Donc, si vous devez augmenter certaines limites, vous devrez soit vous déconnecter et vous reconnecter, soit démarrer une autre session (avec ssh localhostou sur une autre console, par exemple).

Gilles
la source
4

Pour citer la réponse de Tombart

Ces limites seront appliquées après le redémarrage.

Si vous souhaitez appliquer des modifications sans redémarrer, modifiez-le /etc/pam.d/common-sessionen ajoutant cette ligne à la fin du fichier:

session required pam_limits.so
serv-inc
la source