Как узнать использование ресурсов общей памяти с PS?

Я не собираюсь вдаваться в большое количество подробностей о том, почему Ваши попытки ведут себя способ, которым они делают, потому что ответ Michael Mrozek касается этого хорошо. Короче говоря все между одинарными кавычками ('…') интерпретируется буквально (и в особенности первое ' отмечает конец литеральной строки), тогда как ` и $ сохраните их особое значение между "…".

В одинарных кавычках нет никакого заключения в кавычки, таким образом, Вы не можете поместить одинарную кавычку в единственно заключенной в кавычки строке. Существует однако идиома, которая похожа на него:

echo 'foo'\''bar'

Это печатает foo'bar, потому что аргумент echo сделан из единственно заключенной в кавычки трех символьных строк foo, связанный с отдельным символом ' (полученный путем защиты символа ' от его особого значения до предыдущего \), связанный с единственно заключенной в кавычки тремя символьными строками bar. Таким образом, хотя это не совсем, что происходит негласно, можно думать '\'' как способ включать одинарную кавычку в единственно заключенной в кавычки строке.

Если Вы хотите распечатать сложные многострочные строки, лучший инструмент здесь документ. Здесь документ состоит из этих двух символов << сопровождаемый маркером такой как <, затем некоторые строки текста, затем один только маркер конца на его строке. Если маркер заключается в кавычки всегда ('EOF' или "EOF" или \EOF или 'E ""' или …), затем текст интерпретируется буквально (как внутренние одинарные кавычки, за исключением того, что даже ' обычный символ). Если маркер не заключается в кавычки вообще, то текст интерпретируется как в дважды заключенной в кавычки строке, с $\` сохранение их особого статуса (но " и новые строки интерпретируются буквально).

cat <<'EOF'
echo PARAM=`  grep  $ARG  /var/tmp/setfile  | awk '{print $2}' `
EOF

6
02.10.2011, 01:22
2 ответа

Вы могли суммировать столбцы использования с awk:

ps --no-headers -u $USER -o pcpu,rss | awk '{cpu += $1; rss += $2} END {print cpu, rss}'

Вы могли бы также интересоваться free команда для использования памяти:

$ free
             total       used       free     shared    buffers     cached
Mem:       2055480    1806596     248884          0      14016     346276
-/+ buffers/cache:    1446304     609176
Swap:      2097148     132980    1964168

Вывод находится в килобайтах (использование free --mega для мегабайтов или free -m для мебибайт). В частности, used, +/- buffers/cache запись - что-то как общая используемая физическая память (всеми).

10
27.01.2020, 20:26

Вы можете попробовать:

$ ps -eo vsz,comm= | awk 'NR>1{u[$2]+=$1}END{for(i in u) print u[i]"="i}' 
-2
27.01.2020, 20:26

Теги

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