Вместо добавления 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, как те, которые запускаются в фоновом режиме по умолчанию.