Ensure a process is always running
At the moment I use a quick and dirty
nohup ... & to start application and database servers. E.g.
su - foo -c "nohup php-cgi -b 8888 &"
This approach has obvious disadvantages of not starting my service at boot, not restarting the service and/or notifying me if it crashes, not automatically starting dependent daemons, having to
ps to look for PID to kill etc.
upstart but it seems to break the
rc.d so I have to reconfigure all system-wide daemons such as
syslog-ng etc to use it.
Is there a non-intrusive alternative to
upstart that works well with arch linux, coexists with existing
rc.d scripts, supports running daemons under specific users and respawns them if they die? A support for dependencies and notifications on a respawn is a plus but is not required.
Of course I can write a rather simple shell script myself and plug it into
rc.d, but are there any de facto standard well-tested solutions besides
rc.d which doesn't provide respawning?
UPD: I found
monit. Is it any good, and are there any better solutions?