
Linux Ubuntu 14.04 Есть скрипт в ~/app/serve.py
Нужно запустить его в этой папке. В оболочке я могу сделать
> cd ~/app && python serve.py
и он запускает сервер
Нужно запустить его при загрузке сервера в фоновом режиме. Попробовал добавить эту команду cd ~/app && python serve.py ~
в etc/rc.local (и etc/init.d/rc.local), но она не запускается.
Что я делаю не так?
решение1
Вместо добавления cd ~/app && python serve.py
/etc/rc.local попробуйте ввести весь путь. Вы ожидаете, что процесс init каким-то образом узнает, что ~ — это ваш домашний каталог, но init запускается как root. Поскольку init запускается как root, он ищет /
каталог app, а не ваш домашний каталог. Избавьтесь от ~, используя путь к вашему домашнему каталогу.
Попробуйте добавить /home/whitecolor/app/serve.py
в /etc/rc.local
. ( pwd
чтобы найти каталог path.) Избавьтесь от символа python
перед вашим скриптом serve.py, добавив его #!/usr/bin/python
в начало вашего скрипта. (введите a, which python
чтобы найти путь, если он не установлен в обычном месте)
Редактировать: Вы сказали "запустить в фоновом режиме", а я это пропустил. Чтобы запустить команду в фоновом режиме, добавьте &
после команды. Итак, для фонового запуска этой команды выше: /home/whitecolor/app/serve.py &
Init обычно не нуждается в символе фона, чтобы запустить задание и выполнить его в фоновом режиме.
Отличное предложение DrDR не требует такой же &
обработки после команды при запуске cron, поскольку они по умолчанию запускаются в фоновом режиме.
решение2
У меня никогда не возникало необходимости попробовать это, но, судя по всему, скрипты можно запускать при запуске системы через cron, добавив строку, похожую на ту, что начинается с @reboot ниже.
#m h dom mon dow command
1 * * * * someHourlyCommand
@reboot python /home/<username>/app/serve.py
Обратите внимание, я немного изменил команду, чтобы исключить cd'ing в каталог. Ваша ситуация может быть иной, поэтому делайте то, что подходит именно вам.