Estoy interesado en saber el tiempo total que paso trabajando en mi computadora portátil en 2016.
last reboot --since 2016-01-01 --until 2016-12-31 | grep -o '(.*)' | grep -v '-'
me da el tiempo de actividad total de la computadora portátil en este formato:
(01:33)
(04:40)
(01:31)
(1+06:41)
(02:47)
(00:30)
Ahora, ¿cómo lo sumo?
command-line
bash
text-processing
time
daltonfury42
fuente
fuente

wtmpregistros (que es lo que ve en la salida dellastcomando) están configurados para rotar mensualmente (en/etc/logrotate.conf), lo que significa que después de cierto período de tiempo, el registro más antiguo se elimina. En otras palabras, sea lo que sea que intente hacerlast, no será exactoRespuestas:
Aquí hay una versión awk + awk:
lastLa última columna está en el formato(<days>+hours:minutes), dondedays+se descarta si el período es inferior a 1 día.Aquí, el primer
awkcomando genera la última columna, la duración del interés, para lasrebootentradas.Para el segundo
awkcomando:FSes[(+:)], es decir, paréntesis o+o:. Por lo tanto,(h:m)se divide a,h,my(primero y último campos vacíos), y(d+h:m)se divide a,d,h,my(de nuevo, primero y último campos vacíos).0en este caso.hydahora puede tener partes fraccionarias.%d), por lo que se ignora cualquier parte fraccionaria.fuente
Intentando con bash script y extendiendo tu comando. Yo uso
dateutilspara sumar la duración del tiempo.Por lo tanto, para usar este script, se necesita el
dateutilspaquete disponible a través deapt. (sudo apt install dateutils)Este script también tiene en cuenta el tiempo de actividad actual (sesión actual), por lo tanto, es más preciso. Los segundos no se cuentan. La unidad más baja reportada es minuto.
temp.2015-01-01a la cual se agrega el tiempo de actividad actual.neworgy el tiempo de actividad netonewse encuentra por diferencia.Salida:
El siguiente script es para el tiempo de actividad en exactamente un año a partir del día en que se ejecuta el script .
fuente
Aquí hay una implementación de Python de lo que quiero, pero estoy seguro de que hay una manera elegante de hacerlo con bash:
fuente