# UPSD(8)

## NAME

upsd - Network UPS Tools data server

## SYNOPSIS

upsd -h

upsd [OPTIONS]

## DESCRIPTION

upsd 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.

It also conveys administrative messages from the clients back to the drivers, such as starting tests, or setting values.

Communication between upsd and clients is handled on a TCP port. Configuration details for this port are described in upsd.conf(5).

This program is essential, and must be running at all times to actually make any use out of the drivers and clients (except for final UPS power-off commands just before your server goes down, which NUT driver programs can do alone when called as `drivername -k` in a shutdown hook or late ordered SysV init script).

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 upsmon(8) trust upsd for status information about the UPS hardware, so keep it secure.

## OPTIONS

-c command

  Send command to the background process as a signal. Valid commands are:

  reload

    reread configuration files

  stop

    stop process and exit

-P pid

  Send the command signal above using specified PID number, rather than consulting the PID file. This can help define service units which start `upsd` as a foreground process so it does not create a PID file. See also `-FF` option as an alternative.

-D

  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.

-F

  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.

-B

  upsd will run in the background, regardless of debugging settings.

-h

  Display the help text.

-r directory

  upsd will chroot(2) to directory shortly after startup and before parsing any configuration files with this option set. You can use this to create a "jail" for greater security.

  You must coordinate this with your drivers, as upsd must be able to find the state path within directory. See upsdrvctl(8) and nutupsdrv(8).

-u user

  Switch to user user after startup if started as root. This overrides whatever you may have compiled in with `configure --with-user`.

-V

  Display the version of the program.

## RELOADING

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 (permissions, `chroot` jail), and if the daemon did save a PID file when it started (for the `reload` command to find the older instance).

Note | Service instances wrapped by systemd or SMF might not save them by default — use respective `reload`/`refresh` framework actions instead then), e.g. `systemctl reload nut-server` NUT releases after 2.8.0 define aliases for these units, so if your Linux distribution uses NUT-provided unit definitions, `systemctl reload upsd` may also work.

If you think that `upsd` can’t reload, check your syslog for error messages. If it’s 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, or restart it fully (may be needed e.g. if running in a `chroot` jail).

DO NOT make your upsd.conf(5) or upsd.users(5) files world-readable, as they 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, for example.

## DIAGNOSTICS

upsd expects the drivers to either update their status regularly or at least answer periodic queries, called pings. If a driver doesn’t answer, upsd will declare it "stale" and no more information will be provided to the clients.

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 ups.conf(5) is correct. Also make sure that you start your driver(s) before starting upsd.

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.

## ACCESS CONTROL

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 hosts_access(5).

## FILES

The general `upsd` configuration file is upsd.conf(5).

The administrative functions like `SET` and `INSTCMD` for users, and various `upsmon` roles, are defined and controlled in upsd.users(5).

UPS definitions are found in ups.conf(5) (shared with actual drivers).

## ENVIRONMENT VARIABLES

NUT_DEBUG_LEVEL sets default debug verbosity if no -D arguments were provided on command line, but does not request that the daemon runs in foreground mode.

NUT_CONFPATH is the path name of the directory that contains `upsd.conf` and other configuration files. If this variable is not set, upsd uses a built-in default, which is often `/usr/local/ups/etc`.

NUT_STATEPATH is the path name of the directory in which upsd keeps state information. If this variable is not set, upsd uses a built-in default, which is often `/var/state/ups`. The STATEPATH directive in upsd.conf(5) overrides this variable.

NUT_ALTPIDPATH is the path name of the directory in which upsd and drivers store .pid files. If this variable is not set, upsd and drivers use either NUT_STATEPATH if set, or ALTPIDPATH if set, or otherwise the built-in default STATEPATH.

NUT_QUIET_INIT_UPSNOTIFY=true can be used to prevent daemons which can notify service management frameworks (such as systemd) about passing their lifecycle milestones from emitting such notifications (including those about lack of system support for such modern features, once per run).

NUT_QUIET_INIT_BANNER=true can be used to suppress NUT tool name and version banner. NOT recommended for services due to adverse troubleshooting impact, but may be helpful in shell profiles or scripts which process NUT tool outputs.

## SEE ALSO

### Clients:

- upsc(8)

- upscmd(8)

- upsrw(8)

- upslog(8)

- upsmon(8)

### CGI programs:

- upsset.cgi(8)

- upsstats.cgi(8)

- upsimage.cgi(8)

### Driver control:

- upsdrvctl(8)

### Drivers:

- nutupsdrv(8)

- al175(8)

- apcsmart-old(8)

- apcsmart(8)

- apcupsd-ups(8)

- bcmxcp(8)

- bcmxcp_usb(8)

- belkin(8)

- belkinunv(8)

- bestfcom(8)

- bestfortress(8)

- bestuferrups(8)

- bestups(8)

- bicker_ser(8)

- blazer_ser(8)

- blazer_usb(8)

- clone-outlet(8)

- clone(8)

- dummy-ups(8)

- etapro(8)

- everups(8)

- failover(8)

- gamatronic(8)

- genericups(8)

- isbmex(8)

- ivtscd(8)

- liebert-esp2(8)

- liebert-gxe(8)

- liebert(8)

- masterguard(8)

- meanwell_ntu(8)

- metasys(8)

- mge-shut(8)

- mge-utalk(8)

- microdowell(8)

- microsol-apc(8)

- netxml-ups(8)

- nhs_ser(8)

- nut-upower(8)

- nutdrv_atcl_usb(8)

- nutdrv_hashx(8)

- nutdrv_qx(8)

- nutdrv_siemens-sitop(8)

- oneac(8)

- optiups(8)

- powercom(8)

- powerpanel(8)

- powervar_cx_ser(8)

- powervar_cx_usb(8)

- rhino(8)

- richcomm_usb(8)

- riello_ser(8)

- riello_usb(8)

- safenet(8)

- sms_ser(8)

- snmp-ups(8)

- solis(8)

- tripplite(8)

- tripplite_usb(8)

- tripplitesu(8)

- upscode2(8)

- usbhid-ups(8)

- ve-direct(8)

- victronups(8)

### Internet resources:

The NUT (Network UPS Tools) home page: https://www.networkupstools.org/historic/v2.8.5/