Отчет CONKY $ MEM / $ MEMMAX RAM RAM отличается от команды Free -M

У меня есть этот отчет о витринах на моем экране рабочего стола:

enter image description here

Это соответствующая часть файла Conky.conf :

${color1}${font ConkySymbols:size=16}J${font} ${voffset -10}Memory» $hr${color}
${color1}${goto 35}RAM : ${color}$mem/$memmax ${alignr}$memperc% ${membar 4,100}
${color1}${goto 35}SWAP: ${color}$swap/$swapmax $alignr}$swapperc% ${swapbar 4,100}

Однако, когда я бегу Free -m , я получаю это:

enter image description here

, который составляет 2 ГБ меньше, чем отчет Conky (6 ГБ против 8,3 ГБ).

Я также пытался запустить команду MEM в терминале, но команда не распознана.

Как запустить в терминале Команда, которую Conky использует, чтобы найти использованную статистику RAM и почему существует разница с командой Free -m ?

Редактировать :

${color1}${goto 35}RAM: ${execi 10 free --si -m|awk '/^Mem/{printf "%.2f",$3/1024}'}/$memmax ${execi 10 free --si -m|awk '/^Mem/{printf "%.1f%%", 100*$3/$2}'} \
${execibar 10 free --si -m|awk '/^Mem/{print 100*$3/$2}'}

enter image description here

1
задан 21 January 2021 в 21:47

1 ответ

из источников Похоже, что info.mem рассчитывается как info.memmax - memavail , где эти Читают из / proc / meminfo в следующих областях:

    if (strncmp(buf, "MemTotal:", 9) == 0) {
      sscanf(buf, "%*s %llu", &info.memmax);
...
    } else if (strncmp(buf, "MemAvailable:", 13) 
      sscanf(buf, "%*s %llu", &memavail);

, чтобы позвонить Free из Conky, которые вы можете использовать, например,


RAM: ${execi 10 free --si -m|awk '/^Mem/{printf "%.2fGiB\n",$3/1024}'}/$memmax   \
${execi 10 free --si -m|awk '/^Mem/{printf "%.1f%%\n", 100*$3/$2}'} \
${execibar 10 free --si -m|awk '/^Mem/{print 100*$3/$2}'}

, но размер срока, генерируемого Execibar фиксируется глобальными переменными, которые вы должны установить в Conky.config , с:

default_bar_height = 4,
default_bar_width = 100,

выходом Free передается AWK , который ищет начало линии MEM и занимает 3-е ( $ 3 ) Слово на линию и переформатирует его (см. Человек Sprintf ). Вы можете установить количество десятичных знаков в формате %. 2F , Изменяя номер 2.

2
ответ дан 18 March 2021 в 23:44

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

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