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

Reply via email to