我正在使用 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