You can also use Supervisor's "stopasgroup" config option to have it stop
all child processes at the same time as the parent, instead of relying on
the parent to stop the children.

http://supervisord.org/configuration.html#program-x-section-settings

On Thu, Jul 28, 2016 at 11:47 AM, Paul Lockaby <plock...@uw.edu> wrote:

> Another option is to call it like this:
>
>     exec python manage.py linode
>
>
> That has the added benefit of passing any error codes from your python
> script back to supervisor.
>
> -Paul
>
> > On Jul 28, 2016, at 10:44 AM, Timothy Jones <timothy.jo...@syniverse.com>
> wrote:
> >
> > I believe that supervisor is killing the 'bash' process, not the
> > underlying 'python manage.py linod' process.
> >
> > There are two things you can do:
> > 1)  add a 'trap' command to your linod.sh script to catch the TERM signal
> > that supervisor is second, and in the handler, kill the underlying
> 'python
> > manage.py linod' process.
> > 2)  call the 'python manage.py linod' from python directly, taking care
> of
> > whatever the linod.sh program is doing elsewhere.
> >
> > For example, if linod.sh just sets some environment variables before
> > launching 'python manage.py linod', then set them in the supervisor.conf
> > file (using 'environment' configuration variable).  Or you can set these
> > things in the environment that launches supervisor (and supervisor will,
> > naturally, inherit them, and so will your child process 'python manage.py
> > linod').
> >
> > A second guess might be that your script linod.sh isn't "trap"ping
> SIGTERM
> > and passing it along to the 'python manage.py linod' child process.
> >
> >
> > t
> > [1] http://supervisord.org/configuration.html?highlight=stopsignal
> >
> ...........................................................................
> > .............................
> > Tim Bailey-Jones | Senior Advisory Systems Engineer, Development
> > +1 (813) 454.8643 work mobile | (813) 900.8131 personal mobile
> > Syniverse | We make mobile work.
> > timothy.jo...@syniverse.com | http://www.syniverse.com
> > <http://www.syniverse.com/>
> >
> >
> >
> >
> >
> > On 7/28/16, 12:49 PM, "supervisor-users-boun...@lists.supervisord.org on
> > behalf of Luc Saffre" <supervisor-users-boun...@lists.supervisord.org on
> > behalf of luc.saf...@gmx.net> wrote:
> >
> >> Hi Supervisor users and developers,
> >>
> >> this is my first post to this list, so I'd like to first say thanks for
> >> such a great tool. I discovered it a month ago and start to use it more
> >> and more on my production servers. I also wrote about it in my own
> >> documentation: http://www.lino-framework.org/admin/linod.html
> >>
> >> But now I discovered my first problem where I hope for your help.
> >> I have a single configuration file written by myself:
> >>
> >> $ cat /etc/supervisor/conf.d/linod_prod.conf
> >> [program:prod_linod]
> >> command=/bin/bash /var/www/vhosts/prod/linod.sh
> >> username = www-data
> >>
> >> The mentioned bash script contains:
> >>
> >> $ cat /var/www/vhosts/prod/linod.sh
> >> #!/bin/bash
> >> set -e  # exit on error
> >> cd /var/www/vhosts/prod
> >> . env/bin/activate
> >> python manage.py linod
> >>
> >> The process starts and works well. The problem is that Supervisor does
> >> not correctly stop the process. Here is a console session:
> >>
> >> $ ps aux | grep linod
> >> 1001     15828  0.0  0.0   8344   880 pts/0    S+   18:07   0:00 grep
> >> linod
> >>
> >> $ sudo service supervisor start
> >> Starting supervisor: supervisord.
> >>
> >> $ ps aux | grep linod
> >> root     16279  0.0  0.0  19720  1668 ?        S    18:31   0:00
> >> /bin/bash /var/www/vhosts/prod/linod.sh
> >> root     16284 58.8  0.8 328736 135368 ?       S    18:31   0:02 python
> >> manage.py linod
> >> 1001     16309  0.0  0.0   8344   884 pts/0    S+   18:31   0:00 grep
> >> linod
> >>
> >> Until here it looks good. I am a bit surprised to see two processes
> >> here, but that might be caused by some magic.
> >>
> >> The real problem is that Supervisor obviously does not see that spawned
> >> second process and therefore doesn't terminate it. After every restart I
> >> have one additional process running:
> >>
> >> $ sudo service supervisor restart
> >> Restarting supervisor: supervisord.
> >> $ ps aux | grep linod
> >> root     16284  6.0  0.8 328736 135368 ?       S    18:31   0:02 python
> >> manage.py linod
> >> root     16322  0.0  0.0  19720  1672 ?        S    18:32   0:00
> >> /bin/bash /var/www/vhosts/prod/linod.sh
> >> root     16327  106  0.7 306560 115280 ?       R    18:32   0:02 python
> >> manage.py linod
> >> 1001     16352  0.0  0.0   8344   884 pts/0    S+   18:32   0:00 grep
> >> linod
> >>
> >> Yes, I am not using the latest version. I have a default configuration
> >> on a Debian Wheezy VPS:
> >>
> >> $ uname -a
> >> Linux SRV-LX1 3.2.0-4-amd64 #1 SMP Debian 3.2.78-1 x86_64 GNU/Linux
> >>
> >> $ apt-cache show supervisor
> >> Package: supervisor
> >> State: installed
> >> Version: 3.0a8-1.1+deb7u1
> >> ...
> >>
> >> Any ideas?
> >>
> >> Luc
> >>
> >> _______________________________________________
> >> Supervisor-users mailing list
> >> Supervisor-users@lists.supervisord.org
> >> https://lists.supervisord.org/mailman/listinfo/supervisor-users
> >
> > _______________________________________________
> > Supervisor-users mailing list
> > Supervisor-users@lists.supervisord.org
> > https://lists.supervisord.org/mailman/listinfo/supervisor-users
>
> _______________________________________________
> Supervisor-users mailing list
> Supervisor-users@lists.supervisord.org
> https://lists.supervisord.org/mailman/listinfo/supervisor-users
>
_______________________________________________
Supervisor-users mailing list
Supervisor-users@lists.supervisord.org
https://lists.supervisord.org/mailman/listinfo/supervisor-users

Reply via email to