Index · Directives · Python · libudev · gudev systemd 209

## Name

sd_watchdog_enabled — Check whether the service manager expects watchdog keep-alive notifications from a service

## Synopsis

    #include <systemd/sd-daemon.h>

`int sd_watchdog_enabled(` | int unset_environment,
| const uint64_t *usec`)`;

## Description

`sd_watchdog_enabled()` may be called by a service to detect whether the service manager expects regular keep-alive watchdog notification events from it, and the timeout after which the manager will act on the service if it did not get such a notification.

If the `unset_environment` parameter is non-zero, `sd_watchdog_enabled()` will unset the `$WATCHDOG_USEC` and `$WATCHDOG_PID` environment variables before returning (regardless of whether the function call itself succeeded or not). Further calls to `sd_watchdog_enabled()` will then return with zero, but the variable is no longer inherited by child processes.

If the `usec` parameter is non-NULL, `sd_watchdog_enabled()` will return the timeout in µs for the watchdog logic. The service manager will usually terminate a service when it did not get a notification message within the specified time after startup and after each previous message. It is recommended that a daemon sends a keep-alive notification message to the service manager every half of the time returned here. Notification messages may be sent with sd_notify(3) with a message string of "`WATCHDOG=1`".

To enable service supervision with the watchdog logic, use `WatchdogSec=` in service files. See systemd.service(5) for details.

## Return Value

On failure, this call returns a negative errno-style error code. If the service manager expects watchdog keep-alive notification messages to be sent, > 0 is returned, otherwise 0 is returned. Only if the return value is > 0, the `usec` parameter is valid after the call.

## Notes

These APIs are implemented as a shared library, which can be compiled and linked to with the `libsystemd` pkg-config(1) file.

Internally, this functions parses the `$WATCHDOG_PID` and `$WATCHDOG_USEC` environment variable. The call will ignore these variables if `$WATCHDOG_PID` does containe the PID of the current process, under the assumption that in that case, the variables were set for a different process further up the process tree.

## Environment

`$WATCHDOG_PID`

  Set by the system manager for supervised process for which watchdog support is enabled, and contains the PID of that process. See above for details.

`$WATCHDOG_USEC`

  Set by the system manager for supervised process for which watchdog support is enabled, and contains the watchdog timeout in µs See above for details.

## See Also

systemd(1), sd-daemon(3), daemon(7), systemd.service(5), sd_notify(3)