Обычно я делаю так:
cd /home/ubuntu/project/beta
python default.py -dev
Чтобы запустить сервер web.py
Я бы предпочел это:
sudo start beta
Вот мой /etc/init/beta.conf
setuid alex
setgid alex
script
export HOME=/home/ubuntu/project
cd $HOME/beta
python default.py -dev
end script
Когда я делаю sudo start beta
это начинается, но делает sudo status beta
через несколько секунд показывает, что он остановлен. tail /var/log/syslog
показывает kernel: [58023.somenumbers] init: beta main process (5460) terminated with status 134
Теперь, если я сделаю python default.py -dev
а потом echo $?
это показывает 0
- поэтому я не понимаю, почему возникает указанный выше код выхода. Папка beta и ее содержимое принадлежат alex: alex
Любая помощь приветствуется!
Скрипты * .conf не являются скриптами оболочки, поэтому директива интерпретатора #!/bin/sh
является ТОЛЬКО нефункциональным комментарием в этом контексте.
Убедитесь, что нет системного задания с таким же названием «бета». Я предполагаю, что .conf находится в
/home/alex/.init/beta.conf
Пользовательские задания действительно не должны нуждаться в части setuid / setgid, если вам не нужно переключать GID на тот, который не является основным GID для пользователя (но находится в списке, как видно в выводе из id (1)).
Предлагаемый "cd / home / alex /" должен, согласно документации, быть "chdir / home / alex", также опуская лишнюю косую черту в конце. Это может помочь, но раздела сценария, вероятно, будет достаточно, хотя было бы неплохо увидеть вывод - возможно, сосредоточение внимания на захвате вывода с (реального) компакт-диска и сценария может помочь, с:
script
export HOME=/home/ubuntu/project
{
cd $HOME/beta
python default.py -dev
} > $HOME/beta/log 2>&1
end script
Многие проблемы, связанные с запуском таких заданий, управляемых системой, проявляются в выходных данных id (1) или env (1), поэтому вы можете добавить эту строку прямо перед строкой python:
id ; env | sort
Личные учетные записи пользователей часто имеют измененную переменную PATH, дополнительные сценарии настройки и точечные файлы, о которых они забывают, и так далее, или полагаются на настройки среды из .bashrc и т.п., которые происходят только во время полностью интерактивного входа в систему (.bashrc vs .bash_login и kin, и так далее).
Обратите внимание, если ваша система действительно ретро /bin/sh
(маловероятно), экспортная строка должна быть записана как:
HOME=/home/ubuntu/project ; export HOME
:-)
2 потенциальных проблемы
script
. Так что можно script
пытается записать в какое-то место, требуется разрешение root.Попробуйте следовать
#!/bin/sh
setuid alex
setgid alex
#CD to alex home directory first so script can write output
cd /home/alex/
script
export HOME=/home/ubuntu/project
cd $HOME/beta
python default.py -dev
end script