Quelle est la différence entre la définition des limites de files ouverts dans /etc/sysctl.conf vs /etc/security/limits.conf?

J'ai lu deux façons distinctes d'augmenter le nombre de files ouverts autorisés (je tente de modifier pour root, si c'est important).

Une façon est de mettre à jour les parameters dans /etc/security/limits.conf avec quelque chose comme:

 * soft nofile 500000 * hard nofile 500000 root soft nofile 500000 root hard nofile 500000 

Pour configurer le shell actif, on dirait que vous pouvez simplement faire ulimit -n 500000 , qui ne nécessiterait pas de redémarrage ou de déconnection / connection, mais qui pourrait nécessiter un redémarrage des services (?).


L'autre option consiste à mettre à jour /etc/sysctl.conf :

 echo 'fs.file-max = 500000' >> /etc/sysctl.conf 

Pour faire des réglages pour le shell actif, nous pouvons faire sysctl -p , et vérifier avec sysctl fs.file-max .

Ma question est donc: quelle est la différence? Est-ce qu'il y a un? Je suis sur Ubuntu 14.04.2 LTS

La différence est la scope et la façon dont elle est appliquée. Les limites de file ouvertes définies via sysctls s'appliquent à l'set du système, alors que les limites définies via /etc/security/limits.conf s'appliquent uniquement aux objects qui répondent aux critères spécifiés. L'autre différence principale est que les limites /etc/security/limits.conf sont appliquées via ulimit, et peuvent donc être modifiées plus facilement, alors que la limite sysctl établit essentiellement une limite d'allocation de memory dans le kernel lui-même.

En règle générale, vous voulez presque toujours utiliser /etc/security/limits.conf , même si vous définissez des limites globales avec la correspondance générique, car elle est un peu plus fiable et les choses échouent généralement plus gracieusement lorsqu'elles sont touchées avec des ressortingctions ulimit que de bash les limites d'allocation de la memory du kernel.