Есть ли способ проверить использование ulimits для данного пользователя? Я знаю, что вы можете изменить ulimits для одного процесса при запуске или для одной оболочки при запуске, но я хочу иметь возможность «отслеживать», насколько близко пользователь находится в пределах своих ограничений. Я планирую написать bash
скрипт, который будет сообщать statsd текущий процент использования. В частности, я хочу отслеживать:
- открыть файлы (
ulimit -n
) - максимальное количество пользовательских процессов (
ulimit -u
) - ожидающие сигналы (
ulimit -i
)
То, что я хочу, это процент использования (0-100).
Ответы:
Может быть, это помогает для первого вопроса:
Если вам известны идентификаторы процессов (PID) конкретного пользователя, вы можете получить ограничения для каждого процесса с помощью:
Вы можете получить количество открытых файлов для каждого PID с помощью:
А затем просто сравните значение
Max open files
с количеством дескрипторов открытых файлов из второй команды, чтобы получить процент.источник
Выведите процент текущего пользователя для открытых файлов, процедур и ожидающих сигналов, используя несколько неудобных методов и стандартных инструментов:
Вывод на мою систему:
Предполагая, что эти числа хороши, этот ответ показывает, что это можно сделать в оболочке, но, вероятно, не следует делать это, если не существует гораздо лучших методов оболочки. Скорее, этот вопрос лучше сделать с помощью
gcc
илиpython
, и т. Д.источник
Ulimits являются свойствами процессов и наследуются дочерним процессам.
Вы не можете получить ограничения для другого процесса.
источник
man lsof
,man ps
...lsof
сопровождающего, конечно. Но не актуально для конечного пользователя. Также неверно в контексте этого вопроса, так как он спрашивает конкретно о Linux, который имеет документированные интерфейсы (man proc
).-1