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

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

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

  • Maldetect + clamAV не распознает скрытые вредоносные программы base64
  • Centos: VSFTPD не запускается
  • Ошибка Rsync с использованием команды репликации с сапожником
  • yum install mod_auth_token не работает в CentOS
  • В моем центре VNC-сервера CentOS появилось сообщение с просьбой изменить настройки прокси-сервера?
  • Почему команда ls не перечисляет огромные файлы?
  • Как запустить команду (ifup eth0) 10 секунд ПОСЛЕ загрузки настольного компьютера?
  • как создать таблицу с полями в командной строке Centos
  • 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 - лучшая ОС в мире.