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