O comando source
está disponível apenas em bash
e o comando supervisor é executado por sh
. Eu recomendaria usar um script para executar seus comandos:
/etc/supervisor/conf.d/my_app.conf
[program:my_app]
command = bash /path/to/app/init.sh
directory = /path/to/app/
user = ubuntu
autostart=true
autorestart=true
/path/to/app/init.sh
#!/bin/bash
beanstalkd -l 127.0.0.1 -p 11300
source /home/mf/virtualenvs/env/bin/activate
python manage.py command1
python manage.py command2
O único problema é que o supervisor terá apenas o controle do script, não o (s) comando (s). Se você tem uma situação em que deseja que o supervisor gerencie e mantenha ativo um processo específico, eu recomendaria usar exec
em seu arquivo init bash, dessa forma o supervisor terá controle sobre seu processo. Por exemplo,
/path/to/app/init.sh
#!/bin/bash
exec beanstalkd -l 127.0.0.1 -p 11300
Você pode achar isso útil: link