Я использую следующий сценарий в /etc/init/my-project.conf
на моем экземпляре AWS.
description "start and stop the go program 'my-project'"
start on filesystem or runlevel [2345]
stop on runlevel [!2345]
env USER='ec2-user'
env APP_DIR='/home/ec2-user/go/src/bitbucket.com/xxx/my-project/'
env APP_EXEC='my-project'
exec start-stop-daemon —start —chuid ${USER} —chdir ${APP_DIR} —exec ${APP_DIR}${APP_EXEC}
service my-project start
команда дает unrecognized service
ошибка. sudo start my-project
запускает процесс, который не является моим проектом. Когда я бегу sudo status my-project
команда я получаю my-project stop/waiting
. Я не мог найти, что делаю не так.
В пути /home/ec2-user/go/src/bitbucket.com/xxx/my-project/
есть исполняемый файл с именем my-project
. Так что в основном /home/ec2-user/go/src/bitbucket.com/xxx/my-project/my-project
запускает исполняемый файл.
Во-первых, команда "service" предназначена для "сценариев инициализации System V", находящихся в /etc/init.d, а не для конфигураций Upstart в / etc / init. Для Upstart вы хотите использовать «initctl». Эквивалент
$ service --status-all
для Upstart это
$ initctl list
Используя пример конфигурации выскочки, найденный на https://gist.github.com/c4milo/940909 в качестве руководства я смог запустить конфигурацию Upstart, используя следующее:
#description "start and stop the go program 'my-project'"
start on filesystem or runlevel [2345]
stop on runlevel [!2345]
script
USER='ec2-user'
APP_DIR='/home/ec2-user/go/src/bitbucket.com/xxx/my-project/'
APP_EXEC='my-project'
su - ${USER} -c "exec ${APP_DIR}${APP_EXEC}"
end script
Если ваши изменения в /etc/init/my-project.conf не вступят в силу, вы можете попытаться выполнить перезагрузку с помощью:
$ initctl reload-configuration
Я также смог убрать использование env, поскольку это было ненужным.