22 lines
864 B
Bash
22 lines
864 B
Bash
state=$(systemctl is-system-running 2>/dev/null || true)
|
|
uptime_str() {
|
|
awk '{s=int($1);d=int(s/86400);h=int((s%86400)/3600);m=int((s%3600)/60);
|
|
if(d>0)printf "%d days %d hours",d,h;
|
|
else if(h>0)printf "%d hours %d min",h,m;
|
|
else printf "%d min",m}' /proc/uptime
|
|
}
|
|
printf 'HOST: %s UP: %s STATE: %s\n' "$(hostname)" "$(uptime_str)" "$state"
|
|
printf '%0.s-' {1..60}; printf '\n'
|
|
|
|
systemctl list-units --all --type=service \
|
|
--state=active,failed --no-legend --no-pager --plain 2>/dev/null \
|
|
| awk '
|
|
NF >= 4 {
|
|
unit=$1; active=$3; sub=$4
|
|
if (unit ~ /^(getty@|console-getty\.service)/) next
|
|
if (unit ~ /^systemd-(tmpfiles|binfmt|modules-load|sysctl|ask-password|remount|random-seed|update-done|hibernate|sleep|suspend|reboot|poweroff)/) next
|
|
state = (active == "failed") ? "FAILED" : sub
|
|
printf " %-50s %s\n", unit, state
|
|
}
|
|
'
|