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

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

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

  • Сеть не имеет пинга и не может разрешать хосты
  • не может создать символическую ссылку на CentOS 5.6 - Ошибка файла
  • Разделение SAS с дисков SATA
  • Установка Mono Project Offline на Centos 7.0
  • CentOS 7 Live CD?
  • gksu replacment
  • Linux переустанавливает порядок событий для включения ffmpeg
  • Запуск bash внутри cronjob
  • 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 - лучшая ОС в мире.