Мне интересно узнать общее время, которое я потрачу на работу над ноутбуком в 2016 году.
last reboot --since 2016-01-01 --until 2016-12-31 | grep -o '(.*)' | grep -v '-'
дает мне общее время работы ноутбука в этом формате:
(01:33)
(04:40)
(01:31)
(1+06:41)
(02:47)
(00:30)
Теперь, как мне это сложить?
command-line
bash
text-processing
time
daltonfury42
источник
источник
wtmp
журналы (что вы видите в выходных данныхlast
команды) настроены на ротацию ежемесячно (в/etc/logrotate.conf
), что означает, что после определенного периода времени самый старый журнал удаляется. Другими словами, что бы вы ни пытались сделатьlast
, это не будет точнымОтветы:
Вот версия awk + awk:
last
Последний столбец в формате(<days>+hours:minutes)
, гдеdays+
удаляется, если период меньше 1 дня.Здесь первая
awk
команда выводит последний столбец, интересующую продолжительность, дляreboot
записей.Для второй
awk
команды:FS
есть[(+:)]
, то есть скобки или+
или:
. Таким образом,(h:m)
расщепляется на,
h
,m
и(первый и последние поля пустые), и
(d+h:m)
делятся на,
d
,h
,m
и(опять же , первый и последние пустой).
0
в этом случае.h
и вd
настоящее время может иметь дробные части.%d
), поэтому любая дробная часть игнорируется.источник
Попытка использования bash-скрипта и расширение вашей команды. Я использую,
dateutils
чтобы сложить продолжительность времени.Следовательно, чтобы использовать этот скрипт, нужен
dateutils
пакет, доступный черезapt
. (sudo apt install dateutils
)Этот сценарий также учитывает текущее время безотказной работы (текущую сессию) и, следовательно, более точный. Секунды не учитываются. Самая низкая заявленная единица - минута.
temp
.2015-01-01
к которой добавляется текущее время безотказной работы.new
org
и временем безотказной работыnew
определяется разницей.Выход:
Следующий скрипт предназначен для безотказной работы ровно через год со дня запуска скрипта .
источник
Вот реализация Python того, что я хочу, но я уверен, что есть элегантный способ сделать это с помощью Bash:
источник