Я набрал эту команду, чтобы получить информацию об использовании памяти для каждого пользователя:
ps aux | awk 'NR>2{arr[$1]+=$6}END{for(i in arr) print i,arr[i]}'
Я хочу знать, есть ли команда или способ получить использование ЦП или, другими словами, «ЦП» процент использования »для каждого пользователя, как в приведенной выше команде, которая выводит:
Я могу ошибаться, но не правда ли?
ps aux | awk 'NR>2{arr[$1]+=$3}END{for(i in arr) print i,arr[i]}'
Ответ выражен в% загрузки процессора.
Я не очень хорошо разбираюсь в сценариях (этот, например, наверняка заставит некоторых людей плакать и плакать глазами ... не стесняйтесь редактировать мой пост, чтобы включать такие вещи, как счетчик других вещей, которые я не знаю, как 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