5 whenjobs - A powerful but simple cron replacement
9 Editing the jobs script:
14 Get and set variables:
16 whenjobs --get variable
17 whenjobs --set variable value [--type bool|int|float|string]
20 Start and stop the per-user daemon:
22 whenjobs --daemon-start
23 whenjobs --daemon-stop
24 whenjobs --daemon-status
25 whenjobs --daemon-restart
29 Whenjobs is a powerful but simple replacement for cron. It lets you
30 run jobs periodically like cron, but it also lets you trigger jobs to
31 run when user-defined variables are set or change value.
33 Periodic jobs are written like this:
37 # Get the current load average.
38 load=`awk '{print $1}' /proc/loadavg`
39 whenjobs --set load $load --type float
42 When-statements let you create jobs that run based on variables set
47 mail -s "ALERT: high load average: $load" $LOGNAME < /dev/null
50 (When statements are "edge-triggered", meaning that this job will only
51 run when the load goes from under 6 to E<ge> 6).
53 Like L<crontab(5)>, whenjobs are controlled by a jobs file which can
54 be edited from the command line:
58 Whenjobs uses a daemon called L<whenjobsd(8)>. Unlike crond, this
59 daemon runs as the same user. Each user who wants to use whenjobs
60 starts their own daemon:
62 $ whenjobs --daemon-start
64 You can also have the daemon start as you when the machine boots by
65 adding the following line to a boot file such as C</etc/rc.local>.
66 Replace C<username> with your username:
68 su username -c /usr/sbin/whenjobsd
70 Variables are the key to expressing dependencies between whenjobs.
71 Variables are stored (per-user) in the daemon. You can use the
72 command line tool to examine and set variables:
74 $ whenjobs --variables
76 $ whenjobs --set cat sushi
80 The act of setting a variable (using I<--set>) can trigger jobs to run.
86 =item B<--daemon-start>
88 =item B<--daemon-stop>
90 Start and stop the per-user daemon.
92 =item B<--daemon-status>
94 Prints the status of the daemon: C<up> or C<down>.
96 =item B<--daemon-restart>
98 Restart the daemon. (If it is not running, then this command
105 Edit the jobs script. If you make changes to the jobs script, then it
106 is automatically uploaded to the daemon.
108 The C<$EDITOR> environment variable is used for editing. If not set,
111 =item B<--get> variable
113 Print the value of a variable.
119 List the jobs script.
121 =item B<--lib> directory
123 Set the library directory which needs to contain the auxiliary files
124 C<pa_when.cmo> and C<whenlib.cma>. Normally you do not need to
125 specify this. However if you are running whenjobs without installing
126 it, then you need to point this to the C<lib/> directory from the
129 whenjobs --lib $builddir/lib -e
131 =item B<--set> variable value
133 =item B<--type> bool|int|float|string
135 I<--set> sets the variable named C<variable> to the new C<value>. The
136 variable is created if it does not already exist. Note that setting a
137 variable can cause jobs to run immediately.
139 To unset a variable, set it to the empty string:
141 whenjobs --set var ""
143 By default variables are untyped (more precisely, they are treated as
144 strings). You can also set the type of a variable when setting it by
145 adding the optional I<--type> parameter:
147 whenjobs --set free_space 10000 --type int
149 See the discussion of variable types in the L</REFERENCE> section
154 Compile the jobs script and upload it to the daemon, without editing.
155 Note that the I<--edit> option does this automatically. Furthermore,
156 when the daemon is started it checks for a jobs script and loads it if
161 Display all the variables and their values, in the format C<name=value>.
167 Display the name and version of the program and exit.
173 Display brief usage and exit.
187 =head1 ENVIRONMENT VARIABLES
197 Richard W.M. Jones L<http://people.redhat.com/~rjones/>
201 Copyright (C) 2012 Red Hat Inc.
203 This program is free software; you can redistribute it and/or modify
204 it under the terms of the GNU General Public License as published by
205 the Free Software Foundation; either version 2 of the License, or
206 (at your option) any later version.
208 This program is distributed in the hope that it will be useful,
209 but WITHOUT ANY WARRANTY; without even the implied warranty of
210 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
211 GNU General Public License for more details.
213 You should have received a copy of the GNU General Public License
214 along with this program; if not, write to the Free Software
215 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.