/init.d/function + версия Python

Я пытаюсь демонизировать сельдерей и сельдерея. Я скачал файлы celeryd и celeybeat с github и поместил их в /etc/init.d/ (сельдерей и сельдерея) с соответствующими файлами конфигурации под /etc/default/,

Моя проблема в том, что когда я запускаю эти два файла, celeryd и celerybeat используют системный python (2.4), и в результате не могут найти другие установленные приложения под python 2.7. Python 2.7 находится в ~/.bashrc а также /.bash_profile файлы, поэтому у меня нет проблем с запуском других приложений, кроме случаев, когда работники не работают. Когда я бегу python ...../manage.py celery (со всеми опциями) все работает как шарм.

Пожалуйста, дайте мне знать, как я могу заставить /init.d/function запустить python2.7.

Я пытался реализовать #! /bin/sh python, Но это не работает.

1 ответ

Сценарии в /etc/init.d обычно запускаются с правами root при запуске системы. корнеплоды ~/.bashrc (то есть /root/.bashrc) будет выглядеть совершенно иначе, чем у вас (например, /home/reza/.bashrc). Ваша оболочка будет вести себя немного иначе, если вы используете ее в интерактивном режиме или нет.

следовательно, нет смысла пытаться запустить интерпретатор Python через /bin/sh, это только добавляет накладные расходы.

вам нужно добавить правильный shebang, который сообщает системе, какой интерпретатор использовать для вашего скрипта.

например

#!/usr/bin/python2.7

будет использовать python2.7 двоичный файл установлен в /usr/bin, (поэтому всякий раз, когда вы бежите /etc/init.d/foo.py система действительно работает /usr/bin/python2.7 /etc/init.d/foo.py)

Другие вопросы по тегам