brndnmtthws/conky
在 GitHub 查看[Bug]: variable evaluation doesn't respect conditionals; only results get occluded
Open
#1,551 建立於 2023年5月27日
buggood first issuetext
描述
What happened?
I have written a single conky.conf to use on 3 different machines, two of which do not have a GPU, using
${if_match "${nodename}"=="betlognuc"}
to prevent the relevant machines from trying to parse commands they cannot execute.
However they do anyway. Resulting in a slew of error messages.
I understand that conky parses the entire config, but surely it can be a little smarter about it.
Version
conky 1.18.0 compiled 2023-02-20 for Linux x86_64
Which OS/distro are you seeing the problem on?
Ubuntu
Conky config
conky.config = {
alignment = 'top_right',
background = true,
border_width = 1,
cpu_avg_samples = 2,
default_color = 'white',
default_outline_color = 'white',
default_shade_color = '#888888',
default_graph_height = 30,
-- default_graph_width 30,
double_buffer = true,
draw_borders = false,
draw_graph_borders = true,
draw_outline = false,
draw_shades = false,
extra_newline = false,
font = 'DejaVu Sans Mono:size=20',
gap_x = 10,
gap_y = 80,
minimum_height = 15,
minimum_width = 300,
net_avg_samples = 2,
no_buffers = true,
out_to_console = false,
out_to_ncurses = false,
out_to_stderr = false,
out_to_x = true,
own_window = true,
-- own_window_class = 'Conky',
-- own_window_type = 'desktop',
own_window_type = 'normal',
own_window_transparent = false,
-- own_window_transparent = true,
own_window_hints = 'undecorated,sticky,skip_taskbar,skip_pager,below',
show_graph_range = false,
show_graph_scale = false,
stippled_borders = 0,
update_interval = 1.0,
uppercase = false,
use_spacer = 'none',
use_xft = true,
}
conky.text = [[
${color green}${nodename}${color} \
${alignc}${color #44ffFF}CPU:${color}
load: ${color #FFFF00}${alignr}${cpu cpu0}%${color}
${cpugraph cpu0 30 00FF00 FF0000 -l}
temperature: ${color #FFFF00}${alignr}${exec "sensors|grep -E 'Package id 0:'|awk '{print $4}'|sed 's|+||;s|\..*$||'"}°C${color}
${execgraph "sensors|grep -E 'Package id 0:'|awk '{print $4}'|sed 's|+||;s|\..*$||'"}
memory: ${color #FFFF00}${alignr}${memperc}%${color}
${memgraph 30}
${if_match "${nodename}"!="betlognuc"}\
fan: ${color #FFFF00}${alignr}${exec "sensors|grep -E 'FAN.*RPM'|awk '{sum+=$3} END {print ((1200+1500)/0.02)/sum}'|sed 's|\..*$||'"}%${color}
${execgraph "sensors|grep -E 'FAN.*RPM'|awk '{sum+=$3} END {print ((1200+1500)/0.02)/sum}'"}\
${endif}
${if_match "${nodename}"=="betlogbeast"}\
${alignc}${color #44ffFF}GPU:${color}
load: ${color #FFFF00}${alignr}${exec "nvidia-smi --query-gpu=utilization.gpu --format=csv,noheader,nounits"}%${color}
${execgraph "nvidia-smi --query-gpu=utilization.gpu --format=csv,noheader,nounits"}
temperature: ${color #FFFF00}${alignr}${exec "nvidia-smi --query-gpu=temperature.gpu --format=csv,noheader,nounits"}C${color}
${execgraph "nvidia-smi --query-gpu=temperature.gpu --format=csv,noheader,nounits"}
memory: ${color #FFFF00}${alignr}${exec "nvidia-smi --query-gpu=utilization.memory --format=csv,noheader,nounits"}%${color}
${execgraph "nvidia-smi --query-gpu=utilization.memory --format=csv,noheader,nounits"}
fan: ${color #FFFF00}${alignr}${exec "nvidia-smi --query-gpu=fan.speed --format=csv,noheader,nounits"}%${color}
${execgraph "nvidia-smi --query-gpu=fan.speed --format=csv,noheader,nounits"}\
${endif}
${color #00AA7F}up${color}${alignc -20}${color #44ffFF}NET:${color}${alignr}${color #3D98E9}down${color}
${color #00AA7F}${upspeed}${color #3D98E9}${alignr}${downspeed}${color}
${if_match "${nodename}"=="betlogrick"}\
${upspeedgraph enp0s25 30,145 #00553F #00AA7F 0 }${alignr}${downspeedgraph enp0s25 30,145 #1F4C75 #3D98E9 0}\
${else}\
${upspeedgraph eno1 30,145 #00553F #00AA7F 0 }${alignr}${downspeedgraph eno1 30,145 #1F4C75 #3D98E9 0}\
${endif}
${color #00AA7F}read${color}${alignc -20}${color #44ffFF}I/O:${color}${alignr}${color #3D98E9}write${color}
${color #00AA7F}${diskio_read /dev/sda}${color}${alignr}${color #3D98E9}${diskio_write /dev/sda}${color}
${diskiograph_read /dev/sda 16,145 #00553F #00AA7F -l}${alignr}${diskiograph_write /dev/sda 16,145 #1F4C75 #3D98E9 -l}
${if_match "${nodename}"=="betlogbeast"}\
${color #00AA7F}${diskio_read /dev/sdb}${color}${alignr}${color #3D98E9}${diskio_write /dev/sdb}${color}
${diskiograph_read /dev/sdb 16,145 #00553F #00AA7F -l}${alignr}${diskiograph_write /dev/sdb 16,145 #1F4C75 #3D98E9 -l}
${color #00AA7F}${diskio_read /dev/sdc}${color}${alignr}${color #3D98E9}${diskio_write /dev/sdc}${color}
${diskiograph_read /dev/sdc 16,145 #00553F #00AA7F -l}${alignr}${diskiograph_write /dev/sdc 16,145 #1F4C75 #3D98E9 -l}
${color #00AA7F}${diskio_read /dev/sdd}${color}${alignr}${color #3D98E9}${diskio_write /dev/sdd}${color}
${diskiograph_read /dev/sdd 16,145 #00553F #00AA7F -l}${alignr}${diskiograph_write /dev/sdd 16,145 #1F4C75 #3D98E9 -l}
${color #00AA7F}${diskio_read /dev/sde}${color}${alignr}${color #3D98E9}${diskio_write /dev/sde}${color}
${diskiograph_read /dev/sde 16,145 #00553F #00AA7F -l}${alignr}${diskiograph_write /dev/sde 16,145 #1F4C75 #3D98E9 -l}
${color #00AA7F}${diskio_read /dev/sdf}${color}${alignr}${color #3D98E9}${diskio_write /dev/sdf}${color}
${diskiograph_read /dev/sdf 16,145 #00553F #00AA7F -l}${alignr}${diskiograph_write /dev/sdf 16,145 #1F4C75 #3D98E9 -l}\
${endif}
PROC:
${color grey}Name PID CPU% MEM%
${color lightgrey} ${top name 1} ${top pid 1} ${top cpu 1} ${top mem 1}
${color lightgrey} ${top name 2} ${top pid 2} ${top cpu 2} ${top mem 2}
${color lightgrey} ${top name 3} ${top pid 3} ${top cpu 3} ${top mem 3}
${color lightgrey} ${top name 4} ${top pid 4} ${top cpu 4} ${top mem 4}
]]
Stack trace
No response
Relevant log output
conky: desktop window (60005d) is subwindow of root window (1e4)
conky: window type - normal
conky: drawing to created window (0x8a00001)
conky: drawing to double buffer
conky: forked to background, pid is 288064
sh: 1: sh: 1: nvidia-smi: not found
nvidia-smi: not found
sh: 1: sh: 1: nvidia-smi: not found
sh: 1: sh: 1: nvidia-smi: not found
nvidia-smi: not found
nvidia-smi: not found
sh: 1: nvidia-smi: not found
sh: 1: nvidia-smi: not found
awk: cmd. line:1: fatal: division by zero attempted
awk: cmd. line:1: fatal: division by zero attempted
conky: reading exec value failed (perhaps it's not the correct format?)
.....repeats