\fBupsd\fR is responsible for serving the data from the drivers to the clients\&. It connects to each driver and maintains a local cache of the current state\&. Queries from the clients are served from this cache, so delays are minimal\&.
.sp
It also conveys administrative messages from the clients back to the drivers, such as starting tests, or setting values\&.
.sp
Communication between \fBupsd\fR and clients is handled on a TCP port\&. Configuration details for this port are described in \fBupsd.conf\fR(8)\&.
.sp
This program is essential, and must be running at all times to actually make any use out of the drivers and clients\&.
.sp
Controls in the configuration files allow you to limit access to the server, but you should also use a firewall for extra protection\&. Client processes such as \fBupsmon\fR(8) trust \fBupsd\fR for status information about the UPS hardware, so keep it secure\&.
.SH"OPTIONS"
.PP
\fB\-c\fR\fIcommand\fR
.RS4
Send
\fIcommand\fR
to the background process as a signal\&. Valid commands are:
Raise the debugging level\&. upsd will run in the foreground by default, and will print information on stdout about the monitoring process\&. Use this option multiple times for more details\&.
.RE
.PP
\fB\-F\fR
.RS4
upsd will run in the foreground, regardless of debugging settings\&. Specify twice (\-FF
or
\-F \-F) to save the PID file even in this mode\&.
.RE
.PP
\fB\-B\fR
.RS4
upsd will run in the background, regardless of debugging settings\&.
shortly after startup and before parsing any configuration files with this option set\&. You can use this to create a "jail" for greater security\&.
.sp
You must coordinate this with your drivers, as upsd must be able to find the state path within
\fIdirectory\fR\&. See
\fBupsdrvctl\fR(8)
and
\fBnutupsdrv\fR(8)\&.
.RE
.PP
\fB\-u\fR\fIuser\fR
.RS4
Switch to user
\fIuser\fR
after startup if started as root\&. This overrides whatever you may have compiled in with
configure \-\-with\-user\&.
.RE
.PP
\fB\-V\fR
.RS4
Display the version of the program\&.
.RE
.SH"RELOADING"
.sp
upsd can reload its configuration files without shutting down the process if you send it a SIGHUP or start it again with \-c reload\&. This only works if the background process is able to read those files\&.
If you think that upsd can\(cqt reload, check your syslog for error messages\&. If it\(cqs complaining about not being able to read the files, then you need to adjust your system to make it possible\&. Either change the permissions on the files, or run upsd as another user that will be able to read them\&.
DO NOT make your upsd\&.conf or upsd\&.users world\-readable, as those files hold important authentication information\&. In the wrong hands, it could be used by some evil person to spoof your primary\-mode upsmon and command your systems to shut down\&.
upsd expects the drivers to either update their status regularly or at least answer periodic queries, called pings\&. If a driver doesn\(cqt answer, upsd will declare it "stale" and no more information will be provided to the clients\&.
.sp
If upsd complains about staleness when you start it, then either your driver or configuration files are probably broken\&. Be sure that the driver is actually running, and that the UPS definition in \fBups.conf\fR(5) is correct\&. Also make sure that you start your driver(s) before starting upsd\&.
.sp
Data can also be marked stale if the driver can no longer communicate with the UPS\&. In this case, the driver should also provide diagnostic information in the syslog\&. If this happens, check the serial or USB cabling, or inspect the network path in the case of a SNMP UPS\&.
.SH"ACCESS CONTROL"
.sp
If the server is build with tcp\-wrappers support enabled, it will check if the NUT username is allowed to connect from the client address through the /etc/hosts\&.allow and /etc/hosts\&.deny files\&. Note that this will only be done for commands that require to be logged into the server\&. Further details are described in \fBhosts_access\fR(5)\&.
.SH"FILES"
.sp
The general upsd configuration file is \fBupsd.conf\fR(5)\&. The administrative functions like SET and INSTCMD for users are defined and controlled in \fBupsd.users\fR(5)\&. UPS definitions are found in \fBups.conf\fR(5)\&.
.SH"ENVIRONMENT VARIABLES"
.sp
\fBNUT_CONFPATH\fR is the path name of the directory that contains upsd\&.conf and other configuration files\&. If this variable is not set, \fBupsd\fR uses a built\-in default, which is often /usr/local/ups/etc\&.
.sp
\fBNUT_STATEPATH\fR is the path name of the directory in which \fBupsd\fR keeps state information\&. If this variable is not set, \fBupsd\fR uses a built\-in default, which is often /var/state/ups\&. The \fBSTATEPATH\fR directive in \fBupsd.conf\fR(5) overrides this variable\&.
\fBNUT_ALTPIDPATH\fR is the path name of the directory in which \fBupsd\fR and drivers store \&.pid files\&. If this variable is not set, \fBupsd\fR and drivers use either \fBNUT_STATEPATH\fR if set, or ALTPIDPATH if set, or otherwise the built\-in default \fBSTATEPATH\fR\&.