如何启动golang应用程序的upstart进程?

如何启动golang应用程序的upstart进程?

我正在使用 upstart 来启动我的 golang 应用程序。我的应用程序文件夹结构是这样的,

   Web-app/
         /app
             main.go

我构建了应用程序

$cd /home/ec2-user/go/src/github.com/dineshappavoo/web-app/app/
$go build ./...

它在app文件夹下生成了app[可执行文件]作为app.

并将其放入文件夹web-app.conf/etc/init/。这是 web-app.conf 内容,

#Web app upstart script
description "start and stop web app"

start on (net-device-up
and local-filesystems
and rullevel [2345])

stop on runlevel [016]

respawn
respawn limit 5 30

console output   

script
    chdir /home/ec2-user/go/src/github.com/dineshappavoo/web-app/app
    exec ./app
end script

当我尝试 sudo initctl list 时,它将进程列为停止/等待。我尝试开始这个过程

$sudo initctl start web-app

它显示该进程正在启动/正在运行。但它还没有开始。

我检查了/var/log/messages日志。表明,

init: web-app main process (18740) terminated with status 127

我无法启动该过程。我认为 chdir 有问题。过去两天我尝试了不同的选择,但没有成功。我对暴发户还很陌生。有人可以帮我解决这个问题吗?

答案1

退出状态 127 表示无法找到该命令。你的问题是你试图使用暴发户在脚本块内,因此暴发户试图将其作为命令执行,但该命令不存在。您应该将其移至脚本块上方。

此外,由于您仅在脚本块中使用 exec,因此您可以将其删除并仅使用exec.

#Web app upstart script
description "start and stop web app"

start on (net-device-up
and local-filesystems
and rullevel [2345])

stop on runlevel [016]

respawn
respawn limit 5 30

console output   

chdir /home/ec2-user/go/src/github.com/dineshappavoo/web-app/app
exec ./app

相关内容