Existe-t-il un moyen de vérifier l'utilisation des ulimits pour un utilisateur donné? Je sais que vous pouvez modifier les ulimits pour un seul processus lorsque vous le démarrez ou pour un seul shell lors de l'exécution, mais je veux pouvoir "surveiller" à quel point un utilisateur est proche d'atteindre ses limites. Je bash
prévois d' écrire un script qui rendra compte à statsd du pourcentage d'utilisation actuel. Plus précisément, je veux suivre:
- ouvrir des fichiers (
ulimit -n
) - processus utilisateur max (
ulimit -u
) - signaux en attente (
ulimit -i
)
Ce que je veux, c'est le pourcentage d'utilisation (0-100).
Réponses:
Peut-être que cela aide pour la première question:
Si vous connaissez les ID de processus (PID) de l'utilisateur spécifique, vous pouvez obtenir les limites de chaque processus avec:
Vous pouvez obtenir le nombre de fichiers ouverts pour chaque PID avec:
Et puis il suffit de comparer la valeur de
Max open files
avec le nombre de descripteurs de fichiers ouverts de la deuxième commande pour obtenir un pourcentage.la source
Générez le pourcentage de fichiers ouverts, de proc et de signaux en attente de l'utilisateur actuel par plusieurs méthodes et outils standard peu pratiques:
Sortie sur mon système:
En supposant que ces chiffres sont bons, ce que cette réponse montre, c'est que cela peut être fait en shell, mais ne devrait probablement pas, à moins qu'il existe de bien meilleures méthodes shell. Au contraire, ce Q serait mieux fait avec
gcc
, oupython
, etc.la source
Les ulimits sont des propriétés de processus et sont hérités des processus enfants.
Vous ne pouvez pas obtenir les limites d'un autre processus.
la source
man lsof
,man ps
...lsof
responsable, bien sûr. Mais pas pertinent pour l'utilisateur final. Également incorrect dans le contexte de cette question, car il s'agit spécifiquement de Linux, qui a des interfaces documentées (man proc
).-1