SadServers
  • Scenarios
  • Labs
    All Labs Linux & Bash Web Servers Databases Data Processing Docker Kubernetes CI/CD Infrastructure as Code Tooling / Applications
  • Dashboard
  • Solutions
    For Individuals For Businesses
  • Ranking
  • Newsletter
  • Documentation
    FAQ Support Pro Accounts Pro+ Accounts Business Accounts Gift API CLI/TUI Privacy Troubleshooting Interviews
  • Blog
  • Pricing
  • Gift
    Gift Purchase Gift Redeem
  • About
Log In - Sign Up
  1. Labs
  2. Supervisord
  3. Troubleshooting

Guide

Concepts and learning path

Troubleshooting

Failure modes and fixes

Cheatsheet

Commands to keep handy

Supervisord troubleshooting

Program in FATAL or BACKOFF state

The process exited too quickly or failed to start. Check supervisorctl tail myapp stderr and the program's log file. Run the command= manually as the configured user= to reproduce the error outside supervisord.

Restart loop (spawn error)

Supervisord keeps restarting a crashing process. Fix the underlying command failure first. Set autorestart=unexpected so clean exits (code 0) are not restarted. Temporarily use autorestart=false while debugging.

unix:///var/run/supervisor.sock no such file

The supervisord daemon is not running, or the socket path in supervisorctl config does not match supervisord.conf. Start the daemon: systemctl start supervisor or supervisord -c /etc/supervisor/supervisord.conf.

Config changes not applied

Editing files is not enough — run supervisorctl reread to load changes, then supervisorctl update to add/remove/restart affected programs. A full daemon restart is rarely needed.

Permission denied on logs or socket

Ensure stdout_logfile= paths exist and are writable by the program's user=. The unix socket directory must allow the supervisord user and anyone running supervisorctl to connect.

Program works manually but not under supervisord

Supervisord does not load shell profiles. Set environment= and use absolute paths in command=. Set directory= if the app expects a specific working directory.

Debugging workflow

1. Check daemon and program status

systemctl status supervisor supervisorctl status

2. Read program logs

supervisorctl tail -100 myapp supervisorctl tail -100 myapp stderr

3. Run command manually

sudo -u deploy bash -lc '/opt/myapp/venv/bin/gunicorn ...'

Migrating to systemd

When retiring supervisord on a modern host, translate each [program:x] to a .service unit. See the systemd lab for unit file format, logging with journalctl, and enable-at-boot with systemctl enable.

Practice scenarios

Hands-on Supervisord scenarios on live Linux VMs: supervisord

Cheatsheet →
SadServersSadServers

Real-world Linux and DevOps scenarios for hands-on learning and technical assessment.

Uptime Robot ratio (30 days)
Product
  • Scenarios
  • For Individuals
  • For Businesses
  • Pricing
Resources
  • FAQ
  • Blog
  • Newsletter
Company
  • About Us
  • Support
  • Privacy Policy
  • Terms of Service
  • Contact
Connect With Us
info@sadservers.com

Made in Canada 🇨🇦
Updated: 2026-06-13 16:06 UTC – 2d2950a