Как я могу контролировать использование ЦП пользователем?

Мне нужно контролировать использование ЦП пользователями двух серверов (Ubuntu и CentOS). Например:

user1 5% user2 10% ... 

Есть ли инструмент, похожий на top или htop который может это сделать?

  • Ошибка nginx logrotate на работе cron
  • Извлечь имена файлов со структурой каталога в CSV-файл (отдельный файл csv для каждого имени изображения)
  • Как Ubuntu сохраняет постоянные разрешения доступа для точек монтирования автоматически установленных пользователем устройств?
  • Kickstart: одна сетевая карта с DHCP, одна со статическим IP-адресом?
  • Инструкции Samba работают на CentOS 6.5, но не CentOS 6.3 - разрешения в Windows разные
  • Как окончательно отключить запрос root-password для режима восстановления, RHEL7
  • «convert» занимает много времени, чтобы создать миниатюру PNG
  • Список явно установленных пакетов
  • Высокая загрузка процессора native_queued_spin_lock
  • Не удается загрузить, задача btrfs-transacti заблокирована более чем на 120 секунд, как это исправить?
  • Как контролировать верхние приложения, используя CPU (и IO, если возможно) на графике?
  • Как создать видео Mix Mix с kdenlive?
  • One Solution collect form web for “Как я могу контролировать использование ЦП пользователем?”

    Вот сценарий для печати общего использования ЦП для каждого пользователя, зарегистрированного в настоящее время , showPerUserCPU.sh :

     own=$(id -nu) for user in $(who | awk '{print $1}' | sort -u) do # print other user's CPU usage in parallel but skip own one because # spawning many processes will increase our CPU usage significantly if [ "$user" = "$own" ]; then continue; fi (top -b -n 1 -u "$user" | awk -v user="$user" 'NR>7 { sum += $9; } END { print user, sum; }') & done wait # print own CPU usage after all spawned processes completed top -b -n 1 -u "$own" | awk -v user=$own 'NR>7 { sum += $9; } END { print user, sum; }' 

    И вот немного измененная версия для печати использования ЦП всех доступных пользователей (но пропускающих те, у которых использование ЦПУ равняется нулю), showAllPerUserCPU.sh :

     own=$(id -nu) for user in $(getent passwd | awk -F ":" '{print $1}' | sort -u) do # print other user's CPU usage in parallel but skip own one because # spawning many processes will increase our CPU usage significantly if [ "$user" = "$own" ]; then continue; fi (top -b -n 1 -u "$user" | awk -v user=$user 'NR>7 { sum += $9; } END { if (sum > 0.0) print user, sum; }') & done wait # print own CPU usage after all spawned processes completed top -b -n 1 -u "$own" | awk -v user=$own 'NR>7 { sum += $9; } END { print user, sum; }' 

    Существует также связанный скрипт для отображения общего объема использования памяти для каждого пользователя: showPerUserMem.sh

    Для мониторинга в реальном времени просто выполняйте эти сценарии периодически с помощью команды watch .

    Linux и Unix - лучшая ОС в мире.