zsh-users
 help / color / mirror / code / Atom feed
* only run if X seconds have elapsed (time differences in seconds)
@ 2012-12-29 19:40 TJ Luoma
  2012-12-29 23:34 ` Bart Schaefer
  0 siblings, 1 reply; 3+ messages in thread
From: TJ Luoma @ 2012-12-29 19:40 UTC (permalink / raw)
  To: Zsh-Users List

I very often find myself wanting to say "Run this command, but only if
it has not been run in the past X seconds.

For example, if I wanted to run something no more often than once per
day, I'd do something like this:

	#!/bin/zsh

	# load this so I can use EPOCHSECONDS
	zmodload zsh/datetime

	# this is a minimum of how many seconds should elapse between runs
	RUN_EVERY=86400

	# this is a text file where the previous timestamp is saved
	LASTRUN=$HOME/.lastrun

	# if there is no LASTRUN file, make it zero
	[[ -e "$LASTRUN" ]] || echo -n 0 > "$LASTRUN"

	# save current time
	NOW=$EPOCHSECONDS

	# get previous time, and strip out anything that is not a digit
	THEN=$(tr -dc '[0-9]' < "$LASTRUN" )

	# get the difference in seconds between NOW and THEN (the last time it was run
	DIFF=$(($NOW - $THEN))

	# if the difference is less than RUN_EVERY then exit
	[[ "$DIFF" -le "$RUN_EVERY" ]] && exit 0

	# if we get here, it's time to run again, so let's update LASTRUN:
	echo -n "$NOW" > $LASTRUN

	# And then I do whatever else the script is supposed to do here


My question is:

Is there an easier / better way to do this than the way that I am
doing it? If so, what would you recommend?

Thanks!

TjL


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2012-12-30  2:07 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-12-29 19:40 only run if X seconds have elapsed (time differences in seconds) TJ Luoma
2012-12-29 23:34 ` Bart Schaefer
2012-12-30  1:00   ` TJ Luoma

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).