running a command. Together with a service supervision system such as
runit, this can be used to replace cron(8).
-`lr` has been tested on Linux 4.2.
+`snooze` has been tested on Linux 4.2.
It will likely work on other Unix-like systems with C99.
## Benefits
- due to supervision, no centralized daemon required
- filtering by ISO week and day of year
+Over systemd timers:
+- mnemonic syntax
+- less complexity for jobs, no need for a `<job>.timer` file distinct
+ from the `<job>.service` file,
+- can use a file timestamp to ensure minimum waiting time between two
+ runs, even across reboots
+- very robust with respect to external time changes
+- randomized delays
+- variable slack
+- ad-hoc usage possible, just run the program from command line
+
## Rosetta stone
* run five minutes after midnight, every day:
snooze: `-M5`
* run at 2:15pm on the first of every month:
cron: `15 14 1 * *`
- snooze: `-d1 -H2 -M15`
+ snooze: `-d1 -H14 -M15`
* run at 10 pm on weekdays:
cron: `0 22 * * 1-5`
snooze: `-w1-5 -H22`
* `-n`: dry-run, print the next 5 times the command would run.
* `-v`: verbose, print scheduled (and rescheduled) times.
* `-t`, `-T`: see below timefiles
-* `-R`: add between 0 and RANDDELAY seconds to the scheduled time.
+* `-R`: add between 0 and RANDDELAY seconds to the start of the scheduled time.
+* `-J`: add between 0 and JITTER seconds to scheduled execution time.
* `-s`: commands are executed even if they are SLACK (default: 60) seconds late.
-The durations RANDDELAY and SLACK and TIMEWAIT are parsed as seconds,
+The durations RANDDELAY and JITTER and SLACK and TIMEWAIT are parsed as seconds,
unless a postfix of `m` for minutes, `h` for hours, or `d` for days is used.
The remaining arguments are patterns for the time fields:
execs the command. You need to ensure (by setting up supervision)
snooze runs again after that!
* if we woke due to a SIGALRM, the command is executed immediately as well
+* if we notice time moved backwards, recompute the time until the event
* if the event is in the future, recompute the time it takes, possibly
considering shifting of the system time or timezone changes
- (possibly only works on glibc)
+ (timezone reload only tested on glibc)
* If no command was given, just return with status 0
* and so on...
snooze is in the public domain.
-To the extent possible under law,
-Christian Neukirchen <chneukirchen@gmail.com>
-has waived all copyright and related or
-neighboring rights to this work.
+To the extent possible under law, Leah Neukirchen <leah@vuxu.org>
+has waived all copyright and related or neighboring rights to this work.
http://creativecommons.org/publicdomain/zero/1.0/