/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
)