5

Linux Ubuntu 14.04 Есть скрипт в ~/app/serve.py

Нужно запустить его в этой папке. В оболочке я могу сделать

> cd ~/app && python serve.py

и он запускает сервер

Необходимо запустить его на серверах загрузки в фоновом режиме. Попытался добавить эту команду cd ~/app && python serve.py ~ в etc/rc.local (и т.д. /init.d /rc.local), но она не запускается.

Что я делаю неправильно?

2 ответа2

5

Вместо добавления cd ~/app && python serve.py в /etc/rc.local, попробуйте ввести весь путь. Вы ожидаете, что процесс init узнает, что ~ ваш домашний каталог каким-то образом, но init запускается как root. Поскольку init запускается с правами root, он ищет в каталоге / app, а не в вашем домашнем каталоге. Избавьтесь от ~, используя путь к вашему домашнему каталогу.

Попробуйте добавить /home/whitecolor/app/serve.py в /etc/rc.local . (pwd чтобы найти каталог пути.) Избавьтесь от python перед вашим скриптом serve.py, добавив #!/usr/bin/python вверху вашего скрипта. (введите, which python чтобы найти путь, если он не установлен в обычном месте)

Редактировать: Вы сказали "беги в фоновом режиме", и я пропустил это. Чтобы запустить команду в фоновом режиме, добавьте & после команды. Таким образом, чтобы создать фон для этой команды выше: /home/whitecolor/app/serve.py & Init, как правило, не требуется фоновый символ для запуска задания и его запуска в фоновом режиме.

Отличное предложение DrDR не требует такой же обработки & после команды при запуске cron, как те, которые запускаются в фоновом режиме по умолчанию.

4

У меня никогда не было необходимости пробовать это, но, очевидно, скрипты можно запускать при запуске системы через cron, добавив строку, похожую на строку, начинающуюся с @reboot ниже.

#m  h  dom  mon  dow  command
1   *  *    *    *    someHourlyCommand
@reboot               python /home/<username>/app/serve.py

Обратите внимание, я немного изменил команду, чтобы исключить cd'ing в каталоге. Ваша ситуация может быть другой, так что делайте то, что вам подходит.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .