Possible Duplicate:
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.

I found upstart but it seems to break the rc.d so I have to reconfigure all system-wide daemons such as sshd, 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?