pidproxyProgram
Some processes (like mysqld) ignore signals sent to the actual process which is spawned by supervisord.
Instead, a "special" thread/process is created by these kinds of programs which is responsible for
handling signals. This is problematic because supervisord can only kill a process which it creates
itself. If a process created by supervisord creates its own child processes, supervisord cannot kill
them.
Fortunately, these types of programs typically write a "pidfile" which contains the "special" process'
PID, and is meant to be read and used in order to kill the process. As a workaround for this case, a
special pidproxy program can handle startup of these kinds of processes. The pidproxy program is a small
shim that starts a process, and upon the receipt of a signal, sends the signal to the pid provided in a
pidfile. A sample configuration program entry for a pidproxy-enabled program is provided below.
[program:mysql]
command=/path/to/pidproxy /path/to/pidfile /path/to/mysqld_safe
The pidproxy program is put into your configuration's $BINDIR when supervisor is installed (it is a
"console script").