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

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

user1 5% user2 10% ... 

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

  • Является ли $ argv в рыбной оболочке отличной от $ @ в bash?
  • обновлен до Ubuntu 13.04 Server, до-релиз-обновление все еще показывает
  • Мертвые (составные) ключи, не работающие в приложениях GTK с момента обновления
  • Установка устройства с поддержкой MTP на Ubuntu 12.04.3 LTS 32-bit
  • Как запустить приложение с эмулятором терминалов по умолчанию на Ubuntu?
  • Мой ноутбук не может восстановиться после приостановки и спящего режима
  • Хорошая практика использования svn для двух разных приложений, но на одном сервере?
  • Экран замораживания и звука во время просмотра видео
  • 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 .

    Interesting Posts

    Можно ли использовать grep lookaroud несколько раз?

    Что происходит после ошибки страницы?

    Какую команду использовать для поиска всех файлов / папок с разрешениями, отличными от настроек по умолчанию?

    Выполнение команды через SSH

    Безопасно ли просто копировать общие библиотеки на встроенное устройство Linux?

    Передавать аргументы командной строки скрипту bash

    Как создать и смонтировать loop-устройство с гостевой консолью?

    Каков наилучший способ отображения вкладок / пробелов в моих текстовых файлах

    MIME-тип изменяется, если файл редактируется в системах * nix

    Установка прав доступа rwx по умолчанию для группы, но только rw разрешения по умолчанию для файлов

    Как установить и прочитать время без языкового барьера в Linux?

    Рекомендации по распространению флэш-дисков USB

    Разница между местным временем и часами

    Ошибка SSL-сертификата: не удается получить сертификат локального эмитента

    Легкий MS Paint / MacPaint эквивалент FLOSS в Linux?

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