Je souhaite connaître le temps total passé à travailler sur mon ordinateur portable en 2016.
last reboot --since 2016-01-01 --until 2016-12-31 | grep -o '(.*)' | grep -v '-'
me donne la disponibilité totale de l'ordinateur portable dans ce format:
(01:33)
(04:40)
(01:31)
(1+06:41)
(02:47)
(00:30)
Maintenant, comment puis-je l'additionner?
command-line
bash
text-processing
time
daltonfury42
la source
la source
wtmp
journaux (ce que vous voyez dans la sortie de lalast
commande) sont configurés pour tourner mensuellement (en/etc/logrotate.conf
), ce qui signifie qu'après une certaine période, le journal le plus ancien est supprimé. En d'autres termes, quoi que vouslast
Réponses:
Voici une version awk + awk:
last
La dernière colonne de est au format(<days>+hours:minutes)
, oùdays+
est supprimée si la période est inférieure à 1 jour.Ici, la première
awk
commande affiche la dernière colonne, la durée d'intérêt, pour lesreboot
entrées.Pour la deuxième
awk
commande:FS
est[(+:)]
, c'est-à-dire des parenthèses ou+
ou:
. Alors,(h:m)
est divisé à,
h
,m
et(premier et dernier champs vides), et
(d+h:m)
est divisé à,
d
,h
,m
et(encore une fois, d' abord et derniers champs vides).
0
dans ce cas.h
etd
peut maintenant avoir des parties fractionnaires.%d
), de sorte que toute partie fractionnaire est ignorée.la source
Essayer avec le script bash et étendre votre commande. J'utilise
dateutils
pour additionner la durée.Par conséquent, pour utiliser ce script, il faut
dateutils
disposer du package disponible viaapt
. (sudo apt install dateutils
)Ce script prend également en compte la disponibilité actuelle (session actuelle), donc plus précise. Les secondes ne sont pas comptées. L'unité la plus basse signalée est la minute.
temp
.2015-01-01
à laquelle la disponibilité actuelle est ajoutée.new
org
et le temps de disponibilité netnew
se trouve par différence.Production:
Le script suivant concerne la disponibilité dans exactement un an à compter de la date d'exécution du script .
la source
Voici une implémentation python de ce que je veux, mais je suis sûr qu'il existe une façon élégante de le faire avec bash:
la source