sudo start my-project 不起作用

sudo start my-project 不起作用

/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运行该可执行文件。

答案1

首先,“service”命令适用于 /etc/init.d 中的“System V init 脚本”,而不是 /etc/init 中的 Upstart 配置。对于 Upstart,您需要使用“initctl”。相当于

$ service --status-all

对于 Upstart 来说

$ initctl list

使用以下位置的示例 upstart 配置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”的使用,因为它是不必要的。

相关内容