Using Supervisor to Run and Monitor your Applications

It’s been a while I have been using Supervisor to run my apps. It’s a great little tool for running and monitoring processes on UNIX-like operating systems. It provides you simple simple, centralized interface to all your applications running on a box. Using Web Interface, you can see health and logs of the applications without even logging in in the box. Also best part about using Supervisor is it’s ease of usage and configuration.


sudo apt-get install -y supervisor



files = /etc/supervisor/conf.d/*.conf

# Enable Web Interface
port = 9001
username = user # Basic auth username
password = pass # Basic auth password


[program:nodehook] - Define the program to monitor. We'll call it "nodehook".
command - This is the command to run that kicks off the monitored process. We use "node" and run the "http.js" file. If you needed to pass any command line arguments or other data, you could do so here.
directory - Set a directory for Supervisord to "cd" into for before running the process, useful for cases where the process assumes a directory structure relative to the location of the executed script.
autostart - Setting this "true" means the process will start when Supervisord starts (essentially on system boot).
autorestart - If this is "true", the program will be restarted if it exits unexpectedly.
startretries - The number of retries to do before the process is considered "failed"
stderr_logfile - The file to write any errors output.
stdout_logfile - The file to write any regular output.
user - The user the process is run as.
environment - Environment variables to pass to the process.

Example Configuration


command=node /home/art/apps/chada-chutkila/app.js
environment=SECRET_PASSPHRASE='this is secret',SECRET_TWO='another secret'

Running Supervisor

sudo service supervisor start

Supervisor Configuration Structure

├── conf.d
│   └── digi-marketplace-node.conf
└── supervisord.conf

Controller Processes

Reread Configuration and Reload It

supervisorctl reread
supervisorctl update

Controlling Tool


Start / Stop Processess

supervisorctl start <processName>
supervisorctl stop <processName>