sd_watchdog_enabled
systemd
Developer
Lennart
Poettering
lennart@poettering.net
sd_watchdog_enabled
3
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
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_notify3
with a message string of
WATCHDOG=1.
To enable service supervision with the watchdog
logic, use WatchdogSec= in service
files. See
systemd.service5
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-config1
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
systemd1,
sd-daemon3,
daemon7,
systemd.service5,
sd_notify3