boottime=`sysctl -n kern.boottime | awk '{print $4}' | sed 's/,//g'` unixtime=`date +%s` timeAgo=$(($unixtime - $boottime)) uptime=`awk -v time=$timeAgo 'BEGIN { seconds = time % 60; minutes = int(time / 60 % 60); hours = int(time / 60 / 60 % 24); days = int(time / 60 / 60 / 24); printf("%.0f days, %.0f hours, %.0f minutes, %.0f seconds", days, hours, minutes, seconds); exit }'` echo $uptime
Will return something like 1 day, 20 hours, 10 minutes, 55 seconds.
source share