34 lines
805 B
Bash
34 lines
805 B
Bash
#!/usr/bin/env bash
|
|
# Script parses /proc/uptime to get the system uptime
|
|
# and prints it in a human-readable format
|
|
# This is a workaround for system where `uptime` command is taken from coreutils
|
|
# where `uptime -p` is not supported
|
|
|
|
if [[ -r /proc/uptime ]]; then
|
|
s=$(< /proc/uptime)
|
|
s=${s/.*}
|
|
else
|
|
echo "Error UptimeNixOS.sh: Uptime could not be determined." >&2
|
|
exit 1
|
|
fi
|
|
|
|
d="$((s / 60 / 60 / 24)) days"
|
|
h="$((s / 60 / 60 % 24)) hours"
|
|
m="$((s / 60 % 60)) minutes"
|
|
|
|
# Remove plural if < 2.
|
|
((${d/ *} == 1)) && d=${d/s}
|
|
((${h/ *} == 1)) && h=${h/s}
|
|
((${m/ *} == 1)) && m=${m/s}
|
|
|
|
# Hide empty fields.
|
|
((${d/ *} == 0)) && unset d
|
|
((${h/ *} == 0)) && unset h
|
|
((${m/ *} == 0)) && unset m
|
|
|
|
uptime=${d:+$d, }${h:+$h, }$m
|
|
uptime=${uptime%', '}
|
|
uptime=${uptime:-$s seconds}
|
|
|
|
echo "up $uptime"
|