]> git.netwichtig.de Git - user/henk/code/snooze.git/blobdiff - README.md
Change value because st.st_mtime might not be set, see above
[user/henk/code/snooze.git] / README.md
index 9d10153dacefd4663bfff4e4f0ce9d084e5fb4da..600bd08c16767eba16d7adee291875accfbce44e 100644 (file)
--- a/README.md
+++ b/README.md
@@ -4,7 +4,7 @@
 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
@@ -34,6 +34,17 @@ Over uschedule:
 - 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:
@@ -41,7 +52,7 @@ Over uschedule:
   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`
@@ -60,10 +71,11 @@ Over uschedule:
 * `-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:
@@ -127,9 +139,10 @@ Only mtime is looked at, so touch(1) is good.
   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...
 
@@ -180,9 +193,7 @@ You can also just copy the binary into your `PATH`.
 
 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/