Спробуйте з bash script і розширити свою команду. Я використовую dateutils
для підрахунку тривалості часу.
Отже, для використання цього сценарію потрібен dateutils
пакет, доступний через apt
. ( sudo apt install dateutils
)
Цей сценарій також враховує поточний час роботи (теперішній сеанс), отже, більш точний. Секунди не враховуються. Найнижча одиниця повідомляється - хвилина.
#!/bin/bash
# Total uptime reported.
temp=$(last reboot --since 2016-01-01 --until 2016-12-31 | grep -o '(.*)' | grep -v '-' | sed 's/(\([0-9]\{1,\}\)+\([0-9]\{1,\}\):\([0-9]\{1,\}\))/\1d\2h\3m/g ;s/(\([0-9]\{1,\}\):\([0-9]\{1,\}\))/\1h\2m/g' )
curr=$( cat /proc/uptime | perl -ne '/(\d*)/ ; printf "%02d:%02d:%02d\n",int($1/86400),int(($1%86400)/3600),int(($1%3600)/60)' )
echo "Total run time (days:hours:minutes)"
curr="2015-01-01T"$curr
org="2015-01-01T00:00:00"
new=$(dateutils.dadd $curr $temp )
dateutils.ddiff $org $new -f "%dd %Hh %Mm"
- По-перше, перераховані результати останнього перезавантаження та відформатовані для отримання інформації про день, години, хвилини та другу інформацію. Потім це зберігається в
temp
.
- Встановлюється контрольна підроблена дата, яка називається org =,
2015-01-01
до якої додається поточний час роботи.
- Потім всі сукупні оновлення додаються до змінної
new
- Тривалість між
org
та чистим тривалістю тривалості роботи new
визначається різницею.
Вихід:
vayu@helix:$ ./uptime_record.sh
Total run time (days:hours:minutes)
57d 20h 36m
Наступний сценарій працює протягом року рівно з року з дня запуску сценарію .
#!/bin/bash
# Total uptime reported since exactly 1 year (from the time script is run).
now="$(date +'%Y-%m-%d')" ;
last_y=$(dateutils.dadd $now -1y)
temp=$(last reboot --since "$last_y" --until "$now" | grep -o '(.*)' | grep -v '-' | sed 's/(\([0-9]\{1,\}\)+\([0-9]\{1,\}\):\([0-9]\{1,\}\))/\1d\2h\3m/g ;s/(\([0-9]\{1,\}\):\([0-9]\{1,\}\))/\1h\2m/g' )
curr=$( cat /proc/uptime | perl -ne '/(\d*)/ ; printf "%02d:%02d:%02d\n",int($1/86400),int(($1%86400)/3600),int(($1%3600)/60)' )
echo "Total run time in one year (days:hours:minutes)"
curr="1980-01-01T"$curr
org="1980-01-01T00:00:00"
new=$(dateutils.dadd $curr $temp )
dateutils.ddiff $org $new -f "%dd %Hh %Mm"