Я набрал команду free, чтобы получить использование памяти следующим образом:
free -m
вывод:
Я хочу использовать эту команду, чтобы получить ту же информацию, но для всех пользователей, например:
Я использовал эту команду .. потому что это легко для меня .. сохранить свой вывод в переменных в скрипте bash ...
free
уже основано на общесистемном использовании памяти.
Если вы хотите что-то для каждого пользователя, вы можете попробовать что-то вроде:
ps aux | awk 'NR>2{arr[$1]+=$6}END{for(i in arr) print i,arr[i]}'
В качестве быстрого объяснения того, что делает awk
:
ps aux
(размер резидентного набора) и складывает их. Один из вариантов заключается в использовании smem
, поскольку free
не предлагает эту функцию.
$ sudo smem -u -k -t
User Count Swap USS PSS RSS
daemon 1 0 196.0K 197.0K 360.0K
rtkit 1 0 304.0K 317.0K 1.4M
[...]
root 44 0 164.3M 197.7M 284.4M
gert 88 0 1.7G 1.8G 3.2G
---------------------------------------------------
159 0 1.9G 2.1G 3.6G
Для объяснения того, что означают USS и PSS, вот выдержка из справочной страницы о smem.
[...] Unshared memory is reported as the USS (Unique Set
Size). Shared memory is divided evenly among the processes shar‐
ing that memory. The unshared memory (USS) plus a process's pro‐
portion of shared memory is reported as the PSS (Proportional Set
Size). The USS and PSS only include physical memory usage. They
do not include memory that has been swapped out to disk.
Я подозреваю RSS - это использование жилой памяти, также упоминаемое как RES в других утилитах. Для получения дополнительной информации о выражении использования памяти см. Этот вопрос на A Superuser.com: Что мне следует знать об управлении памятью?
perl
команда используется многими системными программами, и они могли бы быть смущены, если бы Вы изменили его.
– buff
3 August 2015 в 22:46