upssched.conf(5) [freebsd man page]
UPSSCHED.CONF(5) NUT Manual UPSSCHED.CONF(5) NAME
upssched.conf - Configuration for upssched timer program DESCRIPTION
This file controls the operations of upssched(8), the timer-based helper program for upsmon(8). CONFIGURATION DIRECTIVES
CMDSCRIPT scriptname Required. This must be above any AT lines. This script is used to invoke commands when your timers are triggered. It receives a single argument which is the name of the timer that caused it to trigger. PIPEFN filename Required. This sets the file name of the socket which will be used for interprocess communications. This should be in a directory where normal users can't create the file, due to the possibility of symlinking and other evil. Caution if you are running Solaris or similar, the permissions that upssched sets on this file are not enough to keep you safe. If your OS ignores the permissions on a FIFO, then you MUST put this in a protected directory! Note by default, upsmon(8) will run upssched as whatever user you have defined with RUN_AS_USER in upsmon.conf(8). Make sure that user can create files and write to files in the path you use for PIPEFN and LOCKFN. My recommendation: create a special directory for upssched, make it owned by your upsmon user, then use it for both. The stock version of the upssched.conf ships with PIPEFN disabled to make you visit this portion of the documentation and think about how your system works before potentially opening a security hole. LOCKFN filename Required. upssched attempts to create this file in order to avoid a race condition when two events are dispatched from upsmon at nearly the same time. This file will only exist briefly. It must not be created by any other process. You should put this in the same directory as PIPEFN. AT notifytype upsname command Define a handler for a specific event notifytype on UPS upsname. upsname can be the special value * to apply this handler to every UPS. This will perform the command command when the notifytype and upsname match the current activity. Possible values for command are: START-TIMER timername interval Start a timer of interval seconds. When it triggers, it will pass the argument timername as an argument to your CMDSCRIPT. Example: Start a timer that'll execute when any UPS (*) has been gone for 10 seconds AT COMMBAD * START-TIMER upsgone 10 CANCEL-TIMER timername [cmd] Cancel a running timer called timername, if possible. If the timer has passed then pass the optional argument cmd to CMDSCRIPT. Example: If a specific UPS (myups@localhost) comes back online, then stop the timer before it triggers AT COMMOK myups@localhost CANCEL-TIMER upsgone EXECUTE command Immediately pass command as an argument to CMDSCRIPT. Example: If any UPS (*) reverts to utility power, then execute ups-back-on-line via CMDSCRIPT. AT ONLINE * EXECUTE ups-back-on-line Note that any AT that matches both the notifytype and the upsname for the current event will be used. For a complete list of notifytype possible values, refer to the section NOTIFY EVENTS in upsmon(8). SEE ALSO
upssched(8), upsmon(8) Internet resources: The NUT (Network UPS Tools) home page: http://www.networkupstools.org/ Network UPS Tools 05/21/2012 UPSSCHED.CONF(5)
Check Out this Related Man Page
UPSSCHED(8) NUT Manual UPSSCHED(8) NAME
upssched - Timer helper for scheduling events from upsmon SYNOPSIS
upssched Note upssched should be run from upsmon(8) via the NOTIFYCMD. You should never run it directly during normal operations. DESCRIPTION
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. INTEGRATION
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 directly. 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. CONFIGURATION
See upssched.conf(5) for information on configuring this program. EARLY SHUTDOWNS
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). DEBOUNCING EVENTS
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. BACKGROUND
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 environments. 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 process exits. This means that you will only see upssched running when one of two things is happening: o There's a timer of some sort currently running o 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. FILES
upssched.conf(5) SEE ALSO
upsmon(8) Internet resources: The NUT (Network UPS Tools) home page: http://www.networkupstools.org/ Network UPS Tools 05/21/2012 UPSSCHED(8)