Mostrar el tiempo conectado por hora(s) y minuto(s)

Mostrar el tiempo conectado por hora(s) y minuto(s)

Estoy escribiendo un script para mostrar cuánto tiempo ha iniciado sesión un usuario.

who | grep "$userid" | awk '{print $1,$3,$4}' | while read user time; do \echo $(($(($(date +%s) - $(date -d "$time" +%s)))/60)) minutes; done

¿Cómo puedo hacer que esto muestre horas y minutos? Por ahora sólo muestra minutos. Necesito que muestre, por ejemplo, 1 hora(s) y 45 minuto(s) con el(los) incluido(s).

Respuesta1

Usando la fecha GNU

who | grep "$userid" | awk '{print $1,$3,$4}' | while read user time; do echo -n "$user  ";eval "echo $(date -ud "@$(($(($(date +%s) - $(date -d "$time" +%s)))))" +'$((%s/3600/24)) days %H hours %M minutes %S seconds')"; done  

Cortesía : ¿Mostrar segundos como días/horas/minutos/segundos?

información relacionada