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

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

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

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

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

1 ответ

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

В этом скрипте будет отображаться% используемого процессора, рассчитывая его с top. Но он будет использовать временный файл для хранения имен пользователей. Я думаю, что это наиболее подходящий способ расчета использования ЦП, поскольку ps aux не говорит, что exaclty совпадает с 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 первых пользователей и% CPU, которые они используют. Вы можете добавить строку, если у вас более 9 пользователей, просто следуйте одному шаблону (замените Xp на число, дважды на строку)

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

2
ответ дан 24 May 2018 в 11:45

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

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