
Je me demandais comment obtenir une simple valeur numérique, de préférence en secondes ou en minutes, du temps écoulé depuis le boot… Certes, il y a la commande uptime, c'est bien gentil, mais je ne trouve pas que ce soit la chose la plus pratique à parser ; si l'on souhaitait en obtenir une valeur numérique.
J'ai longtemps cherché… et puis, au hasard du surf, je suis tombé la dessus : LoginScript to be run by all Facilities Managed Macs.
Et forcément, ça m'a un peu inspiré
.
getuptime()
on getuptime()
set {y, m, d, h} to {5.25948776E+5, 4.38290639E+4, 1440, 60}
set cmd to (do shell script "bootdate=`system_profiler SPDiagnosticsDataType | grep 'Last Run:' | awk '{print $3}'`; boottime=`system_profiler SPDiagnosticsDataType | grep 'Last Run:' | awk '{print $4}'`; echo \"${bootdate} ${boottime}\"")
set boot to ((((word 3 of cmd) * y) + ((word 2 of cmd) * m) + ((word 1 of cmd) * d) + ((word 4 of cmd) * h) + (word 5 of cmd)) as number)
set cmd to (do shell script "date '+%d %m %y %k %M'")
set now to ((((word 3 of cmd) * y) + ((word 2 of cmd) * m) + ((word 1 of cmd) * d) + ((word 4 of cmd) * h) + (word 5 of cmd)) as number)
return ((now - boot) as number)
end getuptime
On décompose la date Last Run de Power On Self-Test pour convertir le tout en minutes, on crée la date actuelle, de la même façon on la décompose et on la convertit en minutes… ensuite, on finit par une simple soustraction.
La fonction getuptime() permet d'obtenir le temps écoulé, en minutes, depuis le boot.