Question Comment vérifier l'ulimit pour un autre utilisateur et modifier les fichiers ouverts?


J'ai un processus en cours d'exécution en tant qu'utilisateur du réducteur et je veux changer open files pour éviter cette erreur méchante:

ERROR 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'autre utilisateur sur Ubuntu et modifier les fichiers ouverts? Je ne me connecte pas actuellement en tant que réducteur mais j'ai un accès root. J'ai essayé de faire ça:

su gearman --shell /bin/bash --command "ulimit -n"

comme recommandé ici mais rien ne sort de la sortie:

$ su gearman --shell /bin/bash --command "ulimit -n"
Password: 
$

14
2017-09-12 18:09


origine




Réponses:


Revisiter cela juste parce que je suis tombé dessus lors d'une recherche Google et trouvé TonyLe commentaire est utile: bien qu'il soit vrai que les limites sont placées au niveau du processus, la façon dont vous détermineriez les limites pour un utilisateur particulier serait de trouver les processus qu'il a démarrés, puis de vérifier les limites. 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

19
2017-10-01 00:01



Cela devrait être la réponse acceptée, utilisée pour trouver le fichier ulimit actuel pour l'utilisateur redis sur Debian. - tholu


Lorsque vous exécutez le ulimit commande qu'il affecte uniquement le processus en cours d'exécution ulimit (le shell) et tous les sous-processus. Donc, quand vous courez bash --command "ulimit -n", cela n'affecte que le nombre de fichiers ouverts pour cette instance de bash, puis la sortie de bash, donc les processus futurs ne sont pas affectés.

Donc, pour accomplir ce que vous voulez (pour augmenter la limite de fichier ouvert pour votre processus réel), il est probablement plus logique de modifier limits.conf pour augmenter la limite de fichier ouvert pour votre utilisateur de réducteur spécifique.

Voir des exemples de limits.conf ailleurs ou ici.


5
2017-09-12 20:51



C'est aussi ce que j'ai trouvé mais j'adorerais pouvoir vérifier si cela "prend effet". Je ne comprends plus le problème que je rencontrais alors je suis sûr - Tony
C'est comme ça que tu vérifies more /proc/<proc_id>/limits  ... peut-être la peine d'ajouter à la réponse - Tony
Il convient de mentionner l'emplacement de limits.conf également: /etc/security/limits.conf - UpTheCreek


Essayez d'utiliser su - <USERNAME> -c ulimit' -Hn'. Je viens de le tester sur CEntOS 7, et ça marche.


1
2018-01-31 10:31