If you do not know much about supervisord, then you are missing something awesome. Let me make your world a little better ;-)

In simple words, supervisord allows you to control your services. If you have a shell script, a python script, a python api, or any executable process that you want to be able to start, stop, and restart and you do not want to create a service executable for it, then look no further. supervisord can do it for you! This blog's processes are controlled via supervisord. You can read what supervisord can do for you here.

Installing it and getting started is a peice of cake!

a. Install supervisord: easy_install supervisor OR pip install supervisor --pre
b. Create a default configuration file: echo_supervisord_conf > /etc/supervisord.conf This is one of the default locations supervisord looks for a supervisord.conf file
c. Configure your service by adding the section below in supervisord.conf:

[program:sample_app]
command=python sample_app.py  
directory=/home/ravi/dev/projects/python/supervisor-play  
autostart=true  
startretries=3  
stdout_logfile=/var/log/supervisor/sample_app.out  
stderr_logfile=/var/log/supervisor/sample_app.err 
Explaination of the config above:

command: The executable command.

directory: Change to this directory before executing the command.

autostart: Start when supervisord process starts.

startretries: Try restarting the process 3 times if it fails to start.

stdout_logfile: The file the process's stdout should go to.

stderr_logfile: The file the process's stderr should go to.

d. Start supervisord by typing the following on the command line:
supervisord