Как отслеживать количество процессов и вилок для каждого пользователя?

Мне нужно выяснить, сколько вилок сделано и сколько одновременных процессов выполняется каждым пользователем с течением времени. Не похоже, что эта информация отслеживается моим дистрибутивом.

Я знаю, как устанавливать ограничения, но я заинтересован в отслеживании этих чисел для каждого пользователя.

  • Является ли генерация дампа ядерной энергией?
  • Ошибки ввода-вывода на жестком диске при загрузке Linux
  • Несколько дистрибутивов Linux или Unix, одинаковый домашний раздел или данные?
  • Как я могу обновить ОС на Iphone на машине Linux?
  • Что такое ALSA в ядре Linux?
  • Слишком много проблем с установкой ядра (6) и Linux на одном компьютере
  • Эквивалент функции «copy = 2» ZFS в Linux с LVM
  • Очень большое время ожидания ввода-вывода на виртуальной машине KVM
  • Могу ли я доверять информации о памяти dmicode?
  • Есть ли способ передать переменную из выражения awk в функцию bash в качестве аргумента?
  • «mv» эквивалент перетаскивания с заменой?
  • Systemd - как служба может определить первый запуск с момента запуска?
  • 3 Solutions collect form web for “Как отслеживать количество процессов и вилок для каждого пользователя?”

    Попробуйте пакет psacct (учет GNU), он должен делать все, что вам нужно, после установки и включения ( accton ), а затем lastcomm будет вести отчет о пользовательских процессах (см. Также sa и dump-acct ). См. Это для справки: файл журнала выполненных команд пользователя

    Возможно, вам потребуется обновить версию до журнала PID / PPID, см. https://serverfault.com/questions/334547/how-can-i-enable-pid-and-ppid-fields-in-psacct-dump-acct , в противном случае я подозреваю, что он будет недопредставлен на fork() без exec() .

    Обновление Если ваша lastcomm команда выводит F во втором столбце, это означает, что процесс был вилкой (которая никогда не exec() чтобы заменить себя новым процессом). Выходной сигнал dump-acct должен показывать PID (и PPID) в формате acct v3.

    Альтернативой psacct может быть новый (ish) taskstats , для него еще нет поддержки, но AFAICT, см. Documentation/accounting/taskstats.txt в Documentation/accounting/taskstats.txt версии ядра. Это может помочь вам запустить http://code.google.com/p/arsenalsuite/wiki/TrackingIOUsage, и есть модуль perl Linux::Taskstats::Read на CPAN.

    В любом случае вам нужно обработать данные на основе временных меток, если вы хотите, чтобы совпадающий процесс подсчитывался для каждого пользователя.

    Обновление 2 Хорошо, что нужно проверить необходимую поддержку psacct :

    1. (официальное) ядро> = 2.6.8 для поддержки учета v3 (или backport)
    2. Ядро с CONFIG_BSD_PROCESS_ACCT и CONFIG_BSD_PROCESS_ACCT_V3 включено
    3. v3 способный учет ( psacct ) пакет, как отмечено выше

    Все вышеперечисленное должно быть истинным в CentOS 6, я проверил 5.x и у него нет CONFIG_BSD_PROCESS_ACCT_V3=y , поэтому вам нужно будет перестроить ваше ядро, чтобы включить его.

    Первоначальному psacct-6.3.2 около 15 лет, версия Red Hat / CentOS поддерживала поддержку v3 и PID-дисплея (я не могу проверить его прямо сейчас, но он должен работать).

    Чтобы проверить конфигурацию вашего ядра:

     zgrep BSD_PROCESS_ACCT /proc/config.gz /boot/config-`uname -r` 

    Вы можете использовать ps -ef для просмотра дочернего pid, родительский идентификатор – тот, который делал разветвление или нерестится. Вы можете использовать watch для запуска сценария на регулярной основе и подсчета для вас.

    Вы можете настроить подсистему аудита для регистрации вилок (и любой другой системный вызов поймает ваше воображение).

     auditctl -a exit,always -S clone 
    Linux и Unix - лучшая ОС в мире.