У меня есть этот отчет о витринах на моем экране рабочего стола:
Это соответствующая часть файла 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
, я получаю это:
, который составляет 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}'}
из источников Похоже, что 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.