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