Upstart is an event driven replacement of SysV init process, upstart ships with RHEL, CentOS, Fedora and Ubuntu.
If you are familiar with linux you know of the classic /etc/init.d directory where you list all your scripts that start and stop processes then you create links like /etc/init5/S47http that will point to the http startu scrip. This will signify that on boot level 5 start http after all the other processes that are start with S00 – S46 have started. There would be a corresponding U process.
upstart changes this. In the directory /etc/init (on rhel) you specify what events should happen before you start the target script. So for instance my delayed_job looks like:
description "DELAYED JOB" author "Tommie Jones" start on (local-filesystems and net-device-up and runlevel ) stop on runlevel [!2345] chdir /var/www/vanguard exec /usr/bin/env RAILS_ENV=production rake jobs:work >> /tmp/upstart.log 2>&1 respawn respawn limit 10 90
This config file says wait till the local files system is running, the network is up and one of the run levels 2-5 are up. If all this is up then change the directory and run delayed job.
So its easier to define how a job is started. what allows this to replace god and monit is ‘respawn’ .
respawn will relaunch a process if it dies. And the respawn limit says if it is respawned more than 10 times in 90 seconds then giveup.
Each command is called a stanza and there are even more stanzas available. Check it out at