J'essaie d'augmenter le nombre maximum de fichiers ouverts pour l'utilisateur actuel
> ulimit -n
1024
J'essaie d'augmenter et d'échouer comme suit
> ulimit -n 4096
bash: ulimit: open files: cannot modify limit: Operation not permitted
Je fais donc la chose naturelle et j'essaie de courir avec la permission temporaire, mais échoue
> sudo ulimit -n 4096
sudo: ulimit: command not found
Des questions
- Comment augmenter ulimit?
- Pourquoi cela arrive-t-il?
Utilisation de Fedora 14
ulimit 4096
ne fonctionne pas. Je pense que-n
c'est correct. Comme preuve de concept, cela fonctionne si je le fais d'abordsudo su - root
(mais ne change que pour la racine).Réponses:
ulimit
est un shell intégré, pas une commande externe. Il doit être intégré car il agit sur le processus shell lui-même, commecd
: les limites, comme le répertoire courant, sont une propriété de ce processus particulier.sudo bash -c 'ulimit -n 4096'
fonctionnerait, mais cela changerait la limite du processus bash invoqué parsudo
seulement, ce qui ne vous aiderait pas.Il existe deux valeurs pour chaque limite: la limite stricte et la limite souple. Seule la racine peut augmenter la limite stricte; n'importe qui peut abaisser la limite stricte et la limite souple peut être modifiée dans les deux sens avec la seule contrainte qu'elle ne peut pas être supérieure à la limite stricte. La limite souple est la valeur réelle qui compte.
Par conséquent, vous devez vous assurer que tous vos processus ont une limite stricte pour les fichiers ouverts d'au moins 4096. Vous pouvez conserver la limite logicielle à 1024. Avant de lancer ce processus qui nécessite beaucoup de fichiers, augmentez la limite logicielle. Dans
/etc/security/limits.conf
, ajoutez les lignesoù
paislee
est le nom de l'utilisateur sous lequel vous souhaitez exécuter votre processus. Dans le shell qui lance le processus pour lequel vous souhaitez une limite supérieure, exécutezpour augmenter la limite souple à la limite dure.
la source
sudo bash -c
sontsudo -i
qui démarrent un shell de connexion etsudo -s
qui démarrent un shell. Les mêmes limitations s'appliquent mais cela peut être utile dans d'autres circonstances.sudo sh -c "ulimit -c 1024 && exec su $LOGNAME"
. Mais à la foisulimit -c 1024
etexec su $LOGNAME"
n'affecte que le shell créé parsudo
, quel est le but de la commande?exec su $LOGNAME"
également ne fait rien de significatif pour utiliser la limite modifiée. Je suis très confus et je me demande si je manque quelque chose.ulimit -Sn unlimited
cela ne fonctionne pas sur la plupart des coques. La bonne méthode consiste à appelerulimit -a
puis à appelerulimit -n <number>
où <numéro est la limite fixe (la colonne de droite).ouvrez le fichier
/etc/security/limits.conf
et ajoutez la ligne<user> soft nofile <value>
. pour utiliser laulimit
modification de l'utilisateur root et essayez la même chose.la source