daemontools is an under-appreciated and really slick service supervisor. I use it to keep most of the services on my server up and running.
Some of those services are Rails applications running with Mongrel. I will let the commands do the rest of the talking:
% cd rails-application
% mkdir service
% cat > service/run
#!/bin/sh
cd ..
exec script/server -e production -p 8080 2>&1
% chmod +x service/run
% mkdir service/log
% cat > service/log/run
#!/bin/sh
exec multilog t ./main
% chmod +x service/log/run
% supervise service | supervise service/log &
[1] 37104 37105
% svstat service
service: up (pid 37106) 5 seconds
% head -n3 service/log/main/current
@40000000490e87102039987c ** Starting Mongrel listening at 0.0.0.0:8080
@40000000490e87102039a434 ** Starting Rails with development environment...
@40000000490e87113869eec4 ** Rails loaded.
% svc -d service
% svstat service
service: down 3 seconds, normally up
Look! No frigging PID files.
And don’t miss the use of multilog that gives automatic log rotation, tai64 timestamps and more.