বাশ স্ক্রিপ্ট দিয়ে চেষ্টা করে এবং আপনার আদেশটি প্রসারিত করছে। আমি ব্যবহার করি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"