On Sat, Nov 18, 2006 at 09:32:15AM +0000, Simon Hobson wrote: > Rob Conway wrote: > > >I just use "date +%s" to get the unix time but how can I easily > >round this value ? > > etime=`date +%s` > step=300 > etime=$(( ${etime} - ( ${etime} % ${step} ) ))
etime=$(( ${etime} / ${step} * ${step} )) is 10% faster, at least on my system. I tried this by looping 100,000 times doing those calculations, several runs. Bash uses integer calculations, and my sequence saves a calculation internally. Printing the value can be done using perl, but unless you're going to use perl for other purposes as well you are better off with gnu-date. This runs in 44% of the time needed for starting perl: /bin/date -d 19700101\ 00:00\ +0000\ ${etime}sec It means: the unix epoch (19700101 00:00, timezone UTC) and then ${etime} seconds further in time (so: reverse of date +%s) I use a hardcoded path, to avoid PATH search (more work, more cpu cycles needed, more time!). Time formatting works, so you can add '+%F %T' to the command and get a nicer format: /bin/date -d 19700101\ 00:00\ +0000\ ${etime}sec +%F\ %T To get it into a variable, to be used in your graph script: printedtime=$(/bin/date -d 19700101\ 00:00\ +0000\ ${etime}sec +%F\ %T) printedtime=$(/bin/date -d "19700101 00:00 +0000 ${etime}sec" +"%F %T") HTH -- Alex van den Bogaerdt http://www.vandenbogaerdt.nl/rrdtool/ -- Unsubscribe mailto:[EMAIL PROTECTED] Help mailto:[EMAIL PROTECTED] Archive http://lists.ee.ethz.ch/rrd-users WebAdmin http://lists.ee.ethz.ch/lsg2.cgi