UPSD(8)

πŸ‘‘ UPSD β€” the NUT data server, aka the main character of your UPS setup πŸ’…

okay bestie, so this is the upsd manual page β€” it lives in the NUT Manual, section 8 (that's the sysadmin/daemon section, iykyk). She's the server, she's the moment, and honestly nothing works without her. Let's get into it. ✨


🌸 NAME 🌸

upsd β€” Network UPS Tools data server. That's her. That's the whole vibe.


✨ SYNOPSIS ✨

upsd -h

upsd [OPTIONS]

πŸ’– DESCRIPTION πŸ’–

So upsd is the one responsible for serving up the data from the drivers to the clients. She connects to each driver and keeps a little local cache of the current state β€” like her own mental notes app πŸ“ β€” and queries from the clients get served straight out of that cache, so delays are, like, minimal. Slay.

She also carries administrative messages back from the clients to the drivers, things like starting tests, or setting values. Two-way queen. 🫢

Communication between upsd and the clients happens over a TCP port. All the config deets for that port are described in upsd.conf(5).

This program is essential, and she has to be running at all times for you to actually get any use out of the drivers and clients. The one exception: final UPS power-off commands right before your server goes down β€” those NUT driver programs can handle alone, when called as drivername -k in a shutdown hook or a late ordered SysV init script. So like, one tiny exception, don't get it twisted.

Controls in the configuration files let you limit access to the server, but you should also use a firewall for extra protection. Client processes like upsmon(8) literally trust upsd for status info about the UPS hardware, so keep it secure. No cap. πŸ”’


πŸŽ€ OPTIONS πŸŽ€

  • -c command β€” send command to the background process as a signal. The valid commands are:
    • reload β€” reread configuration files
    • stop β€” stop process and exit
  • -P pid β€” send the command signal above using the specified PID number, rather than consulting the PID file. This is lowkey so helpful for defining service units that start upsd as a foreground process, so it never creates a PID file at all. See also the -FF option as an alternative.
  • -D β€” raise the debugging level. upsd will run in the foreground by default with this, and will print info on stdout about the monitoring process. Use this option multiple times for more details β€” stack it up, babe.
  • -F β€” upsd will run in the foreground, regardless of debugging settings. Specify it 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 build a "jail" for greater security. πŸ” You must coordinate this with your drivers, because upsd has to be able to find the state path within directory. See upsdrvctl(8) and nutupsdrv(8).
  • -u user β€” switch to 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 her configuration files without shutting the whole process down β€” just send her a SIGHUP, or start her again with -c reload. πŸ’«

But this only works if:

  • the background process is actually able to read those files (permissions, chroot jail), and
  • the daemon did save a PID file when it started (because the reload command needs to find the older instance).
Note πŸ“Œ Service instances wrapped by systemd or SMF might not save them by default β€” use the 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 upsd can't reload, go 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 β€” you might need that last one if you're running in a chroot jail.

DO NOT make your upsd.conf(5) or upsd.users(5) files world-readable, bestie. They hold important authentication information. In the wrong hands, some evil person could use it to spoof your primary-mode upsmon and command your systems to shut down, for example. 😭 Lock that down.

πŸ”₯ DIAGNOSTICS πŸ”₯

upsd expects the drivers to either update their status regularly, or at least answer periodic queries β€” those are 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 your configuration files are probably broken. Be sure that:

  • the driver is actually running, and
  • the UPS definition in ups.conf(5) is correct.

Also make sure you start your driver(s) before starting upsd. Order matters, babe.

Data can also be marked stale if the driver can no longer communicate with the UPS. In that 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 built with tcp-wrappers support enabled, it will check whether 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 you 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 the various upsmon roles, are defined and controlled in upsd.users(5).
  • UPS definitions are found in ups.conf(5) β€” shared with the actual drivers, periodt.

πŸ’œ ENVIRONMENT VARIABLES πŸ’œ

  • NUT_DEBUG_LEVEL β€” sets the default debug verbosity if no -D arguments were provided on the command line. But ngl, it does not request that the daemon runs in foreground mode.
  • NUT_CONFPATH β€” 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 β€” 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 β€” 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. That includes the ones about lack of system support for such modern features, once per run. 🀫
  • NUT_QUIET_INIT_BANNER=true β€” can be used to suppress the NUT tool name and version banner. NOT recommended for services, because of the adverse troubleshooting impact, but it may be helpful in shell profiles or scripts which process NUT tool outputs.

⭐ SEE ALSO ⭐

🌸 Clients:

πŸŽ€ CGI programs:

🧚 Driver control:

πŸ‘‘ Drivers:

πŸ¦„ Internet resources:


okay that's the whole page bestie, you ate πŸ’…βœ¨ this was Network UPS Tools 2.8.5, dated 10/07/2026, and honestly? iconic. go keep your servers alive. πŸ«ΆπŸ”‹

πŸ“¦ where this page comes from