J'ai un processus en cours d'exécution en tant qu'utilisateur d'engrenage et je veux changer open files
pour éviter d'obtenir cette mauvaise erreur:
ERREUR 2014-09-12 17: 49: 14.000000 [main] accept (trop de fichiers ouverts) -> libgearman-server/gearmand.cc: 788
Comment puis-je exécuter ulimit en tant qu'utilisateur sur Ubuntu et modifier les fichiers ouverts? Je ne me connecte pas actuellement en tant qu'engrenage mais j'ai un accès root. J'ai essayé de faire ceci:
su gearman --Shell /bin/bash --command "ulimit -n"
comme recommandé ici mais rien ne se produit:
$ su gearman --Shell /bin/bash --command "ulimit -n"
Password:
$
Revisiter cela simplement parce que je suis tombé dessus lors d’une recherche Google et que le commentaire de Tony est utile: certes, les limites sont définies au niveau du processus déterminer les limites en place pour un utilisateur particulier consisterait à rechercher les processus qu’il a démarrés, puis à vérifier le proc/${id}/limits
.
Plus précisément:
$ ps -u username # look up processes owned by user
$ Sudo grep 'open files' /proc/${id}/limits # find "Max open files" line for process ID
Lorsque vous exécutez la commande ulimit
, cela n'affecte que le processus en cours d'exécution ulimit
(le shell) et tous les sous-processus. Ainsi, lorsque vous exécutez bash --command "ulimit -n"
, cela affecte uniquement le nombre de fichiers ouverts pour cette instance de bash, puis bash se ferme, ainsi les processus futurs ne sont pas affectés.
Donc, pour accomplir ce que vous voulez (augmenter la limite de fichiers ouverts pour votre processus réel), il est probablement plus logique de modifier limits.conf
pour augmenter la limite de fichiers ouverts pour votre utilisateur d'engrenage spécifique.
Voir des exemples de limits.conf ailleurs ou ici .
Essayez d'utiliser su - <USERNAME> -c ulimit' -Hn'
. Je viens de le tester sur CEntOS 7, et cela fonctionne.