Supervisord: Restarting and Reloading

Supervisord is a great daemon for managing application processes. However it does not have a reload option, and restart works different than we get used to. These command makes the following effects.

service supervisor restart

Restart supervisor service without making configuration changes available. It stops, and re-starts all managed applications.

supervisorctl restart <name>

Restart application without making configuration changes available. It stops, and re-starts the application.

If you create a new configuration. None of the commands above will make it available. If you want to apply your configuration changes in both existing and new configurations, start applications in new configurations, and re-start all managed applications, you should run:

service supervisor stop
service supervisor start

If you do not want to re-start all managed applications, but make your configuration changes available, use this command:

supervisorctl reread

This command only updates the changes. It does not restart any of the managed applications, even if their configuration has changed. New application configurations cannot be started, neither. (See the “update” command below)

supervisorctl update

Restarts the applications whose configuration has changed.
Note: After the update command, new application configurations becomes available to start, but do not start automatically until the supervisor service restarts or system reboots (even if autostart option is not disabled). In order to start new application, e.g app2, simply use the following command:

supervisorctl start app2
  • Pingback: Managing Gunicorn Processes With Supervisor | Onur Güzel()

  • Austin Gibbons

    This was really helpful thanks!

    Minor feedback, running

    > supervisorctl update
    my-app: added process group
    > supervisorctl start my-app
    my-app: ERROR (already started)

    so I guess `update` does automatically start?

  • Jeremy Johnson

    Thanks. Was missing the `update` command and wondered why the changes to my conf files weren’t going into effect.

  • What about supervisorctl reload? What does that do compared to reread + update?

    • Dylan Young

      `update` updates program confs (celery, gunicorn, etc,). `reload` restarts the main supervisor daemon.

  • Very helpful, thanks!

  • Marvin R.

    `supervisorctl start app2` is not needed when autostart is used in the config.

    • Jerzy J. Gangi

      Which is on by default

  • Solomon Negusse


  • Pingback: Tarefas demoradas de forma assíncrona com Django e Celery - Fernando Alves()

  • mrbrockpeters

    Wow, that was really helpful. It was really confusing. I just kept running commands hoping to load my config but it’s nice to know exactly what’s going. Thanks man. Having said that I love supervisord and beanstalkd now running my queued jobs on Laravel 5.2. Yay!

  • Trent German

    Thanks, also very helpful for me!

  • Really helpful! Thank you!

  • Yusuf Akhsan Hidayat

    thanks, best answer i found on it,
    > reread
    > update

  • Cueto re-cabron


  • Pingback: Executing time-consuming tasks asynchronously with Django and Celery - Fernando Alves()

  • Very helpful stuff. Thanks!

  • Thank you for sharing this. Very helpful!

  • fatih

    supervisorctl reread
    supervisorctl update

    runing those commands taking so much time perhaps its never ending. Is it normal. If it is not, how can I fix it

  • Simon Jia

    Life saver! Thank you!

  • Magne Matre Gåsland

    PS: use `stopasgroup=true` in your supervisord config for your program, if you want supervisor to also kill subprocesses your program may spawn.