Estou interessado em saber o tempo total que gasto trabalhando no meu laptop em 2016.
last reboot --since 2016-01-01 --until 2016-12-31 | grep -o '(.*)' | grep -v '-'
fornece o tempo de atividade total do laptop neste formato:
(01:33)
(04:40)
(01:31)
(1+06:41)
(02:47)
(00:30)
Agora, como faço para adicioná-lo?
command-line
bash
text-processing
time
daltonfury42
fonte
fonte
wtmp
logs (que é o que você vê na saída dolast
comando) são configurados para girar mensalmente (in/etc/logrotate.conf
), o que significa que, após certo período de tempo, o log mais antigo é excluído. Em outras palavras, o que você estiver tentando fazerlast
, não será preciso #Respostas:
Aqui está uma versão awk + awk:
last
A última coluna da coluna está no formato(<days>+hours:minutes)
, ondedays+
é eliminada se o período for menor que 1 dia.Aqui, o primeiro
awk
comando gera a última coluna, a duração do interesse, para asreboot
entradas.Para o segundo
awk
comando:FS
é[(+:)]
, ou seja, parênteses ou+
ou:
. Então,(h:m)
é dividida para,
h
,m
e(primeiro e último campos vazios), e
(d+h:m)
é dividida para,
d
,h
,m
e(novamente, primeiro e último campos vazios).
0
neste caso.h
e , portanto,d
agora pode ter partes fracionárias.%d
), para que qualquer parte fracionária seja ignorada.fonte
Tentando com o script bash e estendendo seu comando. Eu uso
dateutils
para adicionar a duração do tempo.Portanto, para usar esse script, é necessário o
dateutils
pacote disponívelapt
. (sudo apt install dateutils
)Esse script também leva em consideração o tempo de atividade atual (sessão atual), portanto, mais preciso. Segundos não são contados. A unidade mais baixa relatada é minuto.
temp
.2015-01-01
à qual o tempo de atividade atual é adicionado.new
org
e o tempo de atividade líquidonew
é encontrada por diferença.Resultado:
O script a seguir é para o tempo de atividade em exatamente um ano a partir do dia em que o script é executado .
fonte
Aqui está uma implementação em python do que eu quero, mas tenho certeza de que há uma maneira elegante de fazer isso com o bash:
fonte