sudo开始我的项目不起作用

我在我的AWS实例的/etc/init/my-project.conf使用以下脚本。

 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 。 我找不到我做错了什么。

在path/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”命令用于/etc/init.d中的“System V init脚本”,而不是/ etc / init中的Upstartconfiguration文件。 对于Upstart,你想使用“initctl”。 相当于

 $ service --status-all 

为Upstart是

 $ initctl list 

使用在https://gist.github.com/c4milo/940909find的示例upstartconfiguration作为指导,我能够得到一个Upstartconfiguration运行使用以下内容:

  #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”的使用,因为这是不必要的。