Základem jsou dva řádky v suspend/resume skriptu (o tom více v mém článku zde), které počítají celkovou dobu, po kterou byl počítač uspaný, v proměnné v adresáři /tmp, který se při restartu systému maže, čímž je zajištěno nulování čítače.
Řádek do suspend funkce:
[ -e /tmp/suspend-time ] || echo 0 > /tmp/suspend-time; date +%s >> /tmp/suspend-time
Řádek do resume funkce:
stime=$(echo "`cat /tmp/suspend-time|awk 'NR==1'`+((`date +%s`-`cat /tmp/suspend-time|awk 'NR==2'`)/60)"|bc); echo $stime > /tmp/suspend-time
S vytvořenou proměnnou pracuje skript, který od celkového uptime odečte celkovou dobu strávenou ve spánku a výsledek přepočítá na dny, hodiny a minuty.
real-uptime
#!/bin/bash
[ -e /tmp/suspend-time ] || echo "0">/tmp/suspend-time
uptime=$(echo "`cat /proc/uptime|awk '{print $1}'`/60-`cat /tmp/suspend-time`"|bc) # bc dává po dělení celočíselné výsledky, ale oproti expr mohou být vstupní hodnoty neceločíselné
days=$(expr $uptime / 1440) # $uptime je v minutách, den má 1440 minut
hours=$(expr $uptime % 1440 / 60) # % značí "modulo" - výsledkem je zbytek po dělení
minutes=$(expr $uptime % 60)
if [ "$days" -gt 0 ]; then echo "$days"d "$hours"h "$minutes"m
elif [ "$hours" -gt 0 ]; then echo "$hours"h "$minutes"m
else echo "$minutes"m
fi
[ -e /tmp/suspend-time ] || echo "0">/tmp/suspend-time
uptime=$(echo "`cat /proc/uptime|awk '{print $1}'`/60-`cat /tmp/suspend-time`"|bc) # bc dává po dělení celočíselné výsledky, ale oproti expr mohou být vstupní hodnoty neceločíselné
days=$(expr $uptime / 1440) # $uptime je v minutách, den má 1440 minut
hours=$(expr $uptime % 1440 / 60) # % značí "modulo" - výsledkem je zbytek po dělení
minutes=$(expr $uptime % 60)
if [ "$days" -gt 0 ]; then echo "$days"d "$hours"h "$minutes"m
elif [ "$hours" -gt 0 ]; then echo "$hours"h "$minutes"m
else echo "$minutes"m
fi
Skript lze spouštět klasickým způsobem z terminálu, nebo jeho výstup použít třeba právě v Conky.
${execi 60 ~/.conky/real-uptime}
Žádné komentáře:
Okomentovat
Zkuste prosím při komentováni používat místo volby Anonymní volbu Název/adresa URL, kde vyplníte nějakou přezdívku, adresu zadávat nemusíte. Vědět, které příspěvky jsou od jednoho člověka, je fajn. Díky.
Pokud by se vám náhodou odeslaný komentář na stránce nezobrazil, vytáhnu ho z koše hned jak si toho všimnu. I Google spam filter se občas sekne.