upssched - Timer helper for scheduling events from upsmon
upssched should be run from upsmon(8) via the NOTIFYCMD. You should
never run it directly during normal operations.
upssched was created to allow users to execute programs at times
relative to events being monitored by upsmon(8). The original purpose
was to allow for a shutdown to occur after some fixed period on
battery, but there are other uses that are possible.
upssched needs to be called as the NOTIFYCMD in your upsmon.conf(5).
It determines what is happening based on the UPSNAME and NOTIFYTYPE
environment variables. You should never have to deal with them
Set the EXEC flag on the events that you want to see in upssched. For
example, to make sure that upssched hears about ONLINE, ONBATT and
LOWBATT events, the flags would look like this:
NOTIFYFLAG ONLINE EXEC
NOTIFYFLAG ONBATT EXEC
NOTIFYFLAG LOWBATT EXEC
If you also want to continue writing to the syslog, just add it in:
NOTIFYFLAG ONLINE SYSLOG+EXEC
NOTIFYFLAG ONBATT SYSLOG+EXEC
NOTIFYFLAG LOWBATT SYSLOG+EXEC
For a full list of notify flags, see the upsmon(8) documentation.
See upssched.conf(5) for information on configuring this program.
To shut down the system early, define a timer that starts due to an
ONBATT condition. When it triggers, make your CMDSCRIPT call your
shutdown routine. It should finish by calling "upsmon -c fsd" so that
upsmon gets to shut down the slaves in a controlled manner.
Be sure you cancel the timer if power returns (ONLINE).
If your UPS goes on and off battery frequently, you can use this
program to reduce the number of pager messages that are sent out.
Rather than sending pages directly from upsmon(8), use a short timer
here. If the timer triggers with the UPS still on battery, then send
the page. If the power returns before then, the timer can be cancelled
and no page is necessary.
This program was written primarily to fulfill the requests of users for
the early shutdown scenario. The "outboard" design of the program
(relative to upsmon) was intended to reduce the load on the average
system. Most people don't have the requirement of shutting down after
n seconds on battery, since the usual OB+LB testing is sufficient.
This program was created separately so those people don't have to spend
CPU time and RAM on something that will never be used in their
The design of the timer handler is also geared towards minimizing
impact. It will come and go from the process list as necessary. When
a new timer is started, a process will be forked to actually watch the
clock and eventually start the CMDSCRIPT. When a timer triggers, it is
removed from the queue. Cancelling a timer will also remove it from
the queue. When no timers are present in the queue, the background
This means that you will only see upssched running when one of two
things is happening:
- There's a timer of some sort currently running
- upsmon just called it, and you managed to catch the brief instance
The final optimization handles the possibility of trying to cancel a
timer when there are none running. If the timer daemon isn't running,
there are no timers to cancel, and furthermore there is no need to
start a clock-watcher. So, it skips that step and exits sooner.
The NUT (Network UPS Tools) home page: http://www.networkupstools.org/
Wed Feb 6 2002