He subido un script bash como Gist a mi cuenta de Github en print_osx_uptimes.sh que puede ayudar a responder tu pregunta , incluso si no es exactamente lo que se pidió (lo que fue más complicado).
La secuencia de comandos consultará la función de registro del sistema Apple (ASL) para los mensajes de "apagado". Los valores del campo 'Mensaje' contienen el tiempo de actividad del sistema a partir del evento de apagado, que, según mi opinión, es probablemente bastante cercano a la pregunta del cartel original.
Luego, convierte los segundos de tiempo de actividad a un formato más legible que muestra días, horas, minutos y segundos.
Probado en OS X 10.10.5, pero no ve ninguna razón por la que no debería funcionar en nada desde 10.7 en adelante (probablemente 10.6 también).
El código editado también busca los mensajes de "reinicio" (duh) y actualiza la salida para mostrar cuál fue el tipo de evento (es decir, el nombre del remitente) para cada uno.
Salida de muestra:
$ ./print_osx_uptimes.sh
Shutdown on date/time: Event Reported uptime of:
============================= ========= ===================================
Mon Jul 6 2015 10:32:21 EDT shutdown 1 days 11 hrs 30 min 15 secs
Thu Jul 16 2015 20:47:24 EDT reboot 1 days 22 hrs 15 min 46 secs
Thu Jul 16 2015 22:01:50 EDT shutdown 0 days 21 hrs 4 min 28 secs
Sun Jul 19 2015 02:10:34 EDT shutdown 2 days 16 hrs 35 min 35 secs
Tue Jul 21 2015 19:32:35 EDT shutdown 9 days 17 hrs 41 min 46 secs
Fri Jul 24 2015 20:35:05 EDT shutdown 9 days 7 hrs 55 min 38 secs
Sat Jul 25 2015 00:03:13 EDT shutdown 8 days 10 hrs 45 min 8 secs
Tue Jul 28 2015 09:16:47 EDT shutdown 5 days 21 hrs 20 min 57 secs
Thu Jul 30 2015 22:32:36 EDT shutdown 10 days 0 hrs 3 min 59 secs
Tue Aug 4 2015 01:37:32 EDT shutdown 7 days 4 hrs 24 min 35 secs
Fri Aug 14 2015 19:15:04 EDT reboot 5 days 22 hrs 42 min 1 secs
La carne del script en Github Gist es:
#!/bin/bash
# https://gist.github.com/jps3/afc1e374b632e1ed1ebc
# function displaytime() is a modified form of that from:
# http://unix.stackexchange.com/a/27014
function displaytime {
local T=$1
local D=$((T/60/60/24))
local H=$((T/60/60%24))
local M=$((T/60%60))
local S=$((T%60))
printf '%5s days %2s hrs %2s min %2s secs' $D $H $M $S
}
function get_syslog_entries () {
syslog -d store \
-F '$(Sender) $(Message)' \
-k Sender Req '^(shutdown|reboot)$' \
-k Message Req "SHUTDOWN_TIME"
}
while read -a line; do
sender="${line[0]}"
log_entry_timestamp="$(date -j -f %s "${line[2]}" +"%a %b %e %Y %T %Z")"
uptime_timestamp="$(displaytime "${line[3]}")"
printf "%s %-8s %s\n" "${log_entry_timestamp}" "${sender}" "${uptime_timestamp}"
done < <(get_syslog_entries)
Espero que esto ayude. Intenté limpiar el script y hacer que las partes y los comentarios sean útiles.