Mencoba dengan skrip bash dan memperluas perintah Anda. Saya gunakan dateutils
untuk menambah durasi waktu.
Oleh karena itu untuk menggunakan script ini salah satu kebutuhan dateutils
paket yang tersedia melalui apt
. ( sudo apt install dateutils
)
Script ini memperhitungkan uptime saat ini (sesi saat ini) juga, karenanya lebih akurat. Detik tidak dihitung. Unit terendah yang dilaporkan adalah menit.
#!/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"
- Pertama kali uptime dari reboot terakhir terdaftar dan diformat untuk mengekstrak informasi hari, jam, menit dan kedua. Ini kemudian disimpan dalam
temp
.
- Tanggal palsu referensi disetel disebut org = di
2015-01-01
mana uptime saat ini ditambahkan.
- Kemudian semua waktu up kumulatif ditambahkan ke variabel
new
- Durasi antara
org
dan waktu aktif bersih new
ditemukan berdasarkan perbedaan.
Keluaran:
vayu@helix:$ ./uptime_record.sh
Total run time (days:hours:minutes)
57d 20h 36m
Script berikut adalah untuk uptime tepat dalam satu tahun dari hari script dijalankan .
#!/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"