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
