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"
|