Как использовать free -m, чтобы получить использование памяти для всех пользователей

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

free -m 

вывод:

enter image description here

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

enter image description here

Я использовал эту команду .. потому что это легко для меня .. сохранить свой вывод в переменных в скрипте bash ...

4
задан 14 February 2014 в 19:11

2 ответа

free уже основано на общесистемном использовании памяти.

Если вы хотите что-то для каждого пользователя, вы можете попробовать что-то вроде:

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

В качестве быстрого объяснения того, что делает awk:

  • Удаляет первую строку
  • Итерация по каждой строке и создание массива каждого заданного имени пользователя. Для каждого из них он добавляет шестой столбец из ps aux (размер резидентного набора) и складывает их.
  • После этого он просто перебирает ключи массива для печати содержимого.
0
ответ дан 14 February 2014 в 19:11
  • 1
    Таким образом, то, что я сделал бы, входят в/usr/bin/perl и заменяют исполняемый файл жемчуга сценарием оболочки, который предварительно ожидает "-Mv5.14" тогда называет исполняемый файл жемчуга? – felwithe 3 August 2015 в 19:18

Один из вариантов заключается в использовании smem Install 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: Что мне следует знать об управлении памятью?

0
ответ дан 14 February 2014 в 19:11
  • 1
    Вы могли. Я don' t думают it' s хорошая идея все же. Система perl команда используется многими системными программами, и они могли бы быть смущены, если бы Вы изменили его. – buff 3 August 2015 в 22:46

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

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