Как получить файл в конфигурации супервизора?

1195
gzc

Я хочу получить файл перед запуском команды, но это не работает.

[program:someprogram] command=source /opt/pyenv.someenv/bin/activate && python scripts/some.py directory=/root/p/somedir autostart=true autorestart=true user=root 

После того, как я reread, update, status, Это говорит

supervisor> reread someprogram: changed supervisor> update someprogram: stopped someprogram: updated process group supervisor> status someprogram FATAL can't find command 'source' 

И я попробовал

command=. /opt/pyenv.someenv/bin/activate && python scripts/some.py 

Сказано

someprogram FATAL command at '/usr/local/sbin/.' is a directory 
0

2 ответа на вопрос

1
Patrick

Возможно, попробуйте вызвать псевдоним python для конкретной среды, я знаю, что именно так Passenger использует правильную виртуальную среду при выполнении Django, по крайней мере.

/opt/pyenv.someenv/bin/python /root/p/somedir/scripts/some.py

Это действительно комментарий, а не ** ответ ** на оригинальный вопрос. Вы всегда можете комментировать свои собственные сообщения, и как только у вас будет достаточно [репутации] (https://superuser.com/help/whats-reputation), вы сможете [комментировать любой пост] (https: // superuser. ком / помощь / льготы / комментарий). Пожалуйста, прочитайте [Зачем мне нужно 50 репутации, чтобы комментировать? Что я могу сделать вместо этого?] (Https://meta.stackexchange.com/a/214174) DavidPostill 7 лет назад 0
0
seb

sourceэто встроенный Bash. Поэтому вам понадобится оболочка bash. Что-то вроде:

[program:someprogram] command=/bin/bash -c "source /opt/pyenv.someenv/bin/activate && python  scripts/some.py"