In dit script wordt een aantal voorbeelden gegeven van datum en tijdnotatie. Ook zit er een berekening in van het verschil tussen start- en eindtijd van een proces. Met enig knip- en plakwerk kun je dit in je eigen scripts overzetten waar je daar behoefte aan hebt.
Er wordt gebruik gemaakt van logging naar een bestand. Dit wordt in je home directory geplaatst. In het script is dat /home/mogenblue. Daar moet je natuurlijk je eigen username voor in de plaats zetten.
Het script heet computer-time.sh en dit staat er in:
Code: Selecteer alles
#!/bin/bash
# datum en tijd weergave met verschil in milliseconden
# uitvoer wordt naar bestand geschreven
LogFile='/home/mogenblue/log-time.txt'
#--------------------------------------------------------------------
echo .
echo .
echo .
echo .
echo . > $LogFile
echo 'Datum en tijd weergave met verschil in milliseconden' >> $LogFile
echo . >> $LogFile
echo . >> $LogFile
echo 'Datum en tijd notaties' >> $LogFile
echo . >> $LogFile
Datum=$(date +%d/%m/%Y_%H:%M:%S,%N) ; Datum=${Datum:0:23}
echo 'Datum=$(date +%d/%m/%Y_%H:%M:%S,%N) ; Datum=${Datum:0:23}' >> $LogFile
echo "$Datum" >> $LogFile
echo . >> $LogFile
Tijd=${Datum:11:12}
echo 'Tijd=${Datum:11:12}' >> $LogFile
echo "$Tijd" >> $LogFile
echo . >> $LogFile
Tijd=$(date +%d/%m/%Y_%H:%M:%S,%N) ; Tijd=${Tijd:11:12}
echo 'Tijd=$(date +%d/%m/%Y_%H:%M:%S,%N) ; Tijd=${Tijd:11:12}' >> $LogFile
echo "$Tijd" >> $LogFile
echo . >> $LogFile
echo . >> $LogFile
echo 'Bereken tijdverschil' >> $LogFile
# functie timestamp '2020-01-01 12:20:45.12345' => 1577899245123450000
timestamp() {
date '+%s%N' --date="$1"
}
stime=$(date +%H:%M:%S,%N)
# simuleer een proces dat 1 seconde duurt
sleep 1
etime=$(date +%H:%M:%S,%N)
dtime=$(( $(timestamp "$etime") - $(timestamp "$stime") )) # bereken verschil
dtime=$(echo "scale=3; $dtime / 1000000000" | bc) # afronden op 3 decimalen
dtime=$(echo ${dtime/./,}) # verwissel lokale decimale punt naar komma
printf -v dtime "%-0.3f" $dtime # plaats een nul voor waarden kleiner dan 1 seconde (,531 wordt 0,531)
echo "etime is $etime" >> $LogFile
echo "stime is $stime" >> $LogFile
echo "dtime is $dtime" >> $LogFile
echo . >> $LogFile
echo . >> $LogFile
echo 'Voorbeeld Berekening tijdverschil bij synchroniseren' >> $LogFile
echo . >> $LogFile
Datum=$(date +%Y/%m/%d_%H:%M:%S,%N) ; Datum=${Datum:0:23} ; sTijd=${Datum:11:12}
echo "$Datum: Synchroniseren over ssh, downloaden ..." >> $LogFile
# simuleer synchroniseren over ssh, downloaden
sleep 2
# synchronisatie voltooid
Datum=$(date +%Y/%m/%d_%H:%M:%S,%N) ; Datum=${Datum:0:23} ; vTijd=${Datum:11:12}
echo "$Datum: Synchronisatie downloaden voltooid." >> $LogFile
echo "." >> $LogFile
dtime=$(( $(timestamp "$vTijd") - $(timestamp "$sTijd") )) # bereken verschil
dtime=$(echo "scale=3; $dtime / 1000000000" | bc) # afronden op 3 decimalen
dtime=$(echo ${dtime/./,}) # verwissel lokale decimale punt naar komma
printf -v dtime "%-0.3f" $dtime # plaats een nul voor waarden kleiner dan 1 seconde (,531 wordt 0,531)
echo "vTijd is $vTijd" >> $LogFile
echo "sTijd is $sTijd" >> $LogFile
echo "Voltooid in $dtime s" >> $LogFile
echo "Synchronisatie voltooid in $dtime s" >> $LogFile
echo . >> $LogFile