sd_watchdog_enabled — Check whether the service manager expects watchdog keep-alive notifications from a service
#include <systemd/sd-daemon.h>
int sd_watchdog_enabled( | int unset_environment, |
uint64_t *usec); |
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 $WATCHDOG_USEC
environment variable is set, and the
$WATCHDOG_PID variable is unset or
set to the PID of the current process, the service
manager expects notifications from this process. The
manager will usually terminate a service when it does
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".
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). Those variables are no
longer inherited by child processes. Further calls to
sd_watchdog_enabled() will also
return with zero.
If the usec parameter is
non-NULL, sd_watchdog_enabled()
will write the timeout in µs for the watchdog
logic to it.
To enable service supervision with the watchdog
logic, use WatchdogSec= in service
files. See
systemd.service(5)
for details.
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.
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.
$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.
The watchdog functionality and the
$WATCHDOG_USEC variable were
added in systemd-41.
sd_watchdog_enabled()
function was added in systemd-209. Since that version
the $WATCHDOG_PID variable is also
set.