Search code examples
pidsupervisordchild-process

Anyway to get the ID of processes created by Supervisord?


I need the process ID of processes created using supervisord for use in a script. Processes spawned by supervisord don't create .pid files in their default directories, if at all.

How do I get the process ID of a supervisord child process?


Solution

  • As of supervisor version 3 you can use the supervisorctl pid <name> command to list pids of managed processes:

    supervisorctl pid programname
    

    Use supervisorctl pid all to get a newline-separated list of pids of all managed processes.

    For older supervisord versions, you are stuck with supervisord status, but with a little awk, sed and paste massaging, you can extract those pids to be acceptable as input to other commands:

    echo `bin/supervisorctl status | grep RUNNING | awk -F' ' '{print $4}' | sed -e 's/,$//' | paste -sd' '`
    

    would list all pids of running programs as a space-separated list. Replace echo with a kill -HUP command to send them all the SIGHUP signal, for example.