Program for daemonising and monitoring processes under OpenRC etc.
Go to file
Laurence Withers b17eed9466 SIGTERM handler: use _exit(2), not exit(3)
exit(3) is not async-signal safe (presumably due to atexit(3) processing),
so use _exit(2) instead. This was clearly an omission from the original
code which even had a comment to the effect that _exit(2) needed to be
used. In all likelihood this never caused any problems as atexit(3)
functionality is not used.
2012-10-02 18:52:11 +00:00
scripts Update build system 2012-10-02 09:54:56 +00:00
src/daemonitor SIGTERM handler: use _exit(2), not exit(3) 2012-10-02 18:52:11 +00:00
.gitignore Import skeleton of daemonitor 2008-07-26 14:45:31 +00:00
COPYING Import skeleton of daemonitor 2008-07-26 14:45:31 +00:00
README Update build system 2012-10-02 09:54:56 +00:00
config Update build system 2012-10-02 09:54:56 +00:00
make.sh Update build system 2012-10-02 09:54:56 +00:00
run-test.sh Update build system 2012-10-02 09:54:56 +00:00
version Update build system 2012-10-02 09:54:56 +00:00

README

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

daemonitor
========================================================================
Copyright: ©20072012, Güralp Systems Limited
Author: Laurence Withers <lwithers@guralp.com>
License: GPLv3

See file COPYING for detail license information.

Really Quick Instructions
-------------------------

To build: ./make.sh
To install: ./make.sh install

You might want to edit 'config' first. You might also want to set
'INSTALL_PREFIX', which is prepended onto the destination of any installed
file.

Introduction
------------

Daemonitor is a daemon which starts and monitors a child process. It is
intended to be used with foreground child processes (e.g. daemons with a
foreground mode, or long-running processes which are always in the
foreground). Taken together, the daemonitor instance and its child process
represent a "standard" UNIX daemon process (i.e. backgrounded, PID file,
etc.).

The true purpose of daemonitor is to provide a robust way of monitoring
services under e.g. openrc, which provides a mechanism for starting, stopping
and querying services but does not have any automatic monitoring of its own.
Thus if a daemon or service crashes, this will not be recorded or addressed
by the system.

Daemonitor is a very small daemon which itself never exits. Its simple design
and single purpose should ensure that it is robust against various conditions
that may arise in the system (out of disk space, out of memory, ...), and
that it is unlikely to crash due to bugs. The process it monitors can then
crash or exit or be killed and daemonitor will detect this and restart it.

Instructions
------------

TODO