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

Я набрал эту команду, чтобы получить информацию об использовании памяти для каждого пользователя:

ps aux | awk 'NR>2{arr[$1]+=$6}END{for(i in arr) print i,arr[i]}'

Я хочу знать, есть ли команда или способ получить использование ЦП или, другими словами, «ЦП» процент использования »для каждого пользователя, как в приведенной выше команде, которая выводит:

enter image description here

1
задан 16 February 2014 в 03:16

2 ответа

Я могу ошибаться, но не правда ли?

ps aux | awk 'NR>2{arr[$1]+=$3}END{for(i in arr) print i,arr[i]}'

Ответ выражен в% загрузки процессора.

0
ответ дан 16 February 2014 в 03:16
  • 1
    ... но моя проблема состоит в том, что однажды начальные загрузки системы (в установщик Ubuntu) ключевое повторение делает его неприменимым. Единственный шанс, который я имею, состоит в том, чтобы перейти к опытному режиму в меню начальной загрузки установщика и определить некоторый аргумент ядра, который корректировал бы/запрещал бы ключевое повторение. Тогда я могу взаимодействовать с установщиком. В конечном счете я должен буду также скорректировать заключительную начальную загрузку ядра args для создания системы применимой после установки. – Craig Constantine 9 August 2015 в 14:31

Я не очень хорошо разбираюсь в сценариях (этот, например, наверняка заставит некоторых людей плакать и плакать глазами ... не стесняйтесь редактировать мой пост, чтобы включать такие вещи, как счетчик других вещей, которые я не знаю, как do.)

Этот скрипт отобразит% используемого ЦП, вычисляя его по top. Но он будет использовать временный файл для хранения имен пользователей. Я думаю, что это наиболее подходящий способ для расчета загрузки процессора, поскольку ps aux не говорит точно так же, как top.

#! /bin/bash

## store the usernames in .aux.tmp temporary file
ps aux | awk 'NR>2{arr[$1]+=$6}END{for(i in arr) print i}' > .aux.tmp 

## print each user, then calcultate each CPU-usage with top
# this will only print the 9 firsts users. if you expect more than 
# 9 users, add lines following the pattern (by replacing "9p" 
# by "10p" for the 10st user, for example).

# print user 1 :
echo `sed -n '1p' .aux.tmp` 
top -b -n 1 -u `sed -n '1p' .aux.tmp`  | awk 'NR>7 { sum += $9; } END { print sum; }' 
echo ""

# print user 2 :
echo `sed -n '2p' .aux.tmp`  
top -b -n 1 -u `sed -n '2p' .aux.tmp`  | awk 'NR>7 { sum += $9; } END { print sum; }'
echo ""

# print user 3 :
echo `sed -n '3p' .aux.tmp`  
top -b -n 1 -u `sed -n '3p' .aux.tmp`  | awk 'NR>7 { sum += $9; } END { print sum; }'
echo ""

# print user 4 :
echo `sed -n '4p' .aux.tmp`  
top -b -n 1 -u `sed -n '4p' .aux.tmp`  | awk 'NR>7 { sum += $9; } END { print sum; }'
echo ""

# print user 5 :
echo `sed -n '5p' .aux.tmp`  
top -b -n 1 -u `sed -n '5p' .aux.tmp`  | awk 'NR>7 { sum += $9; } END { print sum; }'
echo ""

# print user 6 :
echo `sed -n '6p' .aux.tmp`  
top -b -n 1 -u `sed -n '6p' .aux.tmp`  | awk 'NR>7 { sum += $9; } END { print sum; }'
echo ""

# print user 7 :
echo `sed -n '7p' .aux.tmp`  
top -b -n 1 -u `sed -n '7p' .aux.tmp`  | awk 'NR>7 { sum += $9; } END { print sum; }'
echo ""

# print user 8 :
echo `sed -n '8p' .aux.tmp`  
top -b -n 1 -u `sed -n '8p' .aux.tmp`  | awk 'NR>7 { sum += $9; } END { print sum; }'
echo ""

# print user 9 :
echo `sed -n '9p' .aux.tmp`  
top -b -n 1 -u `sed -n '9p' .aux.tmp`  | awk 'NR>7 { sum += $9; } END { print sum; }'
echo ""

Этот скрипт напечатает 9 первых пользователей и% процессора, который они используют. Вы можете добавить строку, если у вас более 9 пользователей, просто следуйте одному и тому же шаблону (замените Xp на число, дважды на строку)

Вы можете скопировать и вставить это в файл и запустить его с помощью bash /path/to/file

0
ответ дан 16 February 2014 в 03:16

Другие вопросы по тегам:

Похожие вопросы: