opt/zion-terminal/bin/zion-health (view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
#!/usr/bin/env bash
# ZION TERMINAL - Saude do sistema
# Cyberdeck criado por Pablo Murad em 2026
export LC_ALL=C
. /opt/zion-terminal/bin/zion-lib.sh 2>/dev/null
[ "$1" = "--help" ] && { echo "Uso: zion saude — temperatura, ventoinha, frequencia, carga, RAM, swap, disco, erros, servicos, Tailscale e rede, com estados OK/ATENCAO/CRITICO."; exit 0; }
# rotulo | valor | estado(ok/warn/crit/nd) | detalhe
linha() { printf ' %b%-14s%b %b%-18s%b %b %b%s%b\n' "$ZDISC" "$1" "$ZR" "$ZWHT" "$2" "$ZR" "$(ui_state "$3")" "$ZGRY" "${4:-}" "$ZR"; }
ui_header "SAUDE DO SISTEMA"
temp=$(zion_temp_c); tst=ok; [ "$temp" -ge 65 ] && tst=warn; [ "$temp" -ge 80 ] && tst=crit
linha "Temperatura" "${temp} C" "$tst"
# Ventoinha (hwmon/pwm-fan) - dado real quando existe
fan=""; for h in /sys/class/hwmon/hwmon*; do [ -r "$h/name" ] && [ "$(cat "$h/name")" = pwm-fan ] && { for p in "$h"/pwm1 "$h"/fan1_input; do [ -r "$p" ] && fan="$fan $(basename "$p")=$(cat "$p")"; done; }; done
[ -n "$fan" ] && linha "Ventoinha" "$(echo $fan)" ok "PWM 0-255" || linha "Ventoinha" "sem controle expl." nd
freq=$(( $(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq)/1000 ))
linha "CPU freq" "${freq} MHz" ok "governor: $(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor)"
cpu=$(zion_cpu_pct); cst=ok; [ "$cpu" -ge 75 ] && cst=warn; [ "$cpu" -ge 90 ] && cst=crit
linha "CPU uso" "${cpu} %" "$cst"
carga=$(zion_load); nucleos=$(nproc)
cc=$(awk -v c="$carga" -v n="$nucleos" 'BEGIN{p=c/n*100; print (p>=90)?"crit":(p>=70)?"warn":"ok"}')
linha "Carga (1m)" "$carga" "$cc" "de $nucleos nucleos"
rp=$(zion_ram_pct); rst=ok; [ "$rp" -ge 75 ] && rst=warn; [ "$rp" -ge 90 ] && rst=crit
linha "RAM" "$(zion_ram_str)" "$rst" "${rp}%"
swused=$(awk '/SwapTotal/{t=$2}/SwapFree/{f=$2}END{printf "%d",(t-f)/1024}' /proc/meminfo)
swtot=$(awk '/SwapTotal/{printf "%d",$2/1024}' /proc/meminfo)
linha "Swap (zram)" "${swused} / ${swtot} MB" ok
dp=$(zion_disco_pct); dst=ok; [ "$dp" -ge 75 ] && dst=warn; [ "$dp" -ge 90 ] && dst=crit
linha "Disco /" "$(zion_disco)" "$dst"
falhas=$(zion_falhas); linha "Servicos falha" "$falhas" "$([ "$falhas" -gt 0 ] && echo crit || echo ok)"
[ "$falhas" -gt 0 ] && systemctl --failed --no-legend | awk '{print " - "$1}'
erros=$(journalctl -p err -b --no-pager 2>/dev/null | grep -c . || echo 0)
linha "Erros no boot" "$erros" "$([ "$erros" -gt 20 ] && echo warn || echo ok)" "journalctl -p err -b"
ts=$(zion_ts_estado); linha "Tailscale" "$ts" "$([ "$ts" = conectado ] && echo ok || echo warn)" "$(zion_ip_ts)"
net=$(zion_internet); linha "Internet" "$net" "$([ "$net" = disponivel ] && echo ok || echo warn)"
ui_rule
|