Ich möchte wissen, wie viel Zeit ich im Jahr 2016 mit der Arbeit an meinem Laptop verbracht habe.
last reboot --since 2016-01-01 --until 2016-12-31 | grep -o '(.*)' | grep -v '-'
gibt mir die Gesamtverfügbarkeit des Laptops in diesem Format:
(01:33)
(04:40)
(01:31)
(1+06:41)
(02:47)
(00:30)
Wie rechne ich das jetzt zusammen?
command-line
bash
text-processing
time
daltonfury42
quelle
quelle
wtmp
Protokolle (was Sie in der Ausgabe deslast
Befehls sehen) so eingestellt sind, dass sie monatlich (in/etc/logrotate.conf
) rotieren , was bedeutet, dass nach einer bestimmten Zeitspanne das älteste Protokoll gelöscht wird. Mit anderen Worten, was auch immer Sie versuchenlast
, es wird nicht genau seinAntworten:
Hier ist eine awk + awk Version:
last
‚s letzte Spalte ist in dem Format(<days>+hours:minutes)
, in demdays+
fallen gelassen wird , wenn der Zeitraum weniger als 1 Tag.Hier gibt der erste
awk
Befehl die letzte Spalte, die Dauer des Interesses, fürreboot
Einträge aus.Für den zweiten
awk
Befehl:FS
ist[(+:)]
, dh, Klammern oder+
oder:
. So(h:m)
ist Split,
h
,m
und(erste und letzte Felder leer), und
(d+h:m)
ist gespalten zu,
d
,h
,m
und(wieder erste und letzte Felder leer).
0
in diesem Fall einfach hinzufügen .h
undd
nun möglicherweise Bruchteile enthält.%d
), sodass jeder Bruchteil ignoriert wird.quelle
Versuchen Sie es mit Bash-Skript und erweitern Sie Ihren Befehl. Ich
dateutils
addiere die Zeitdauer.Zur Verwendung dieses Skripts ist daher das
dateutils
Paket erforderlich, das über verfügbar istapt
. (sudo apt install dateutils
)Dieses Skript berücksichtigt auch die aktuelle Verfügbarkeit (aktuelle Sitzung) und ist daher genauer. Sekunden werden nicht gezählt. Die niedrigste gemeldete Einheit ist die Minute.
temp
.2015-01-01
zu dem die aktuelle Betriebszeit hinzugefügt wird.new
org
und die Nettoverfügbarkeitnew
ergibt sich aus der Differenz.Ausgabe:
Das folgende Skript gilt für die Verfügbarkeit in genau einem Jahr ab dem Tag, an dem das Skript ausgeführt wird .
quelle
Hier ist eine Python-Implementierung dessen, was ich will, aber ich bin sicher, dass es eine elegante Möglichkeit gibt, dies mit bash zu tun:
quelle