all repos — zion-terminal @ 66508a0a605214d34c7a2231848d44ee63b394b2

dotfiles

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