Thanks, Paul, that's better (and simpler!) than my idea.

t
...........................................................................
.............................
Tim Bailey-Jones | Senior Advisory Systems Engineer, Development
+1 (813) 454.8643 work mobile | (813) 900.8131 personal mobile
Syniverse | We make mobile work.
[email protected] | http://www.syniverse.com
<http://www.syniverse.com/>
 




On 7/28/16, 1:47 PM, "Paul Lockaby" <[email protected]> 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
>><[email protected]> 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.
>> [email protected] | http://www.syniverse.com
>> <http://www.syniverse.com/>
>> 
>> 
>> 
>> 
>> 
>> On 7/28/16, 12:49 PM, "[email protected] on
>> behalf of Luc Saffre" <[email protected] on
>> behalf of [email protected]> 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
>>> [email protected]
>>> https://lists.supervisord.org/mailman/listinfo/supervisor-users
>> 
>> _______________________________________________
>> Supervisor-users mailing list
>> [email protected]
>> https://lists.supervisord.org/mailman/listinfo/supervisor-users
>

_______________________________________________
Supervisor-users mailing list
[email protected]
https://lists.supervisord.org/mailman/listinfo/supervisor-users

Reply via email to