बैश स्क्रिप्ट के साथ कोशिश कर रहे हैं और अपनी कमांड बढ़ा रहे हैं। मैं 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"