首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >弹性Beanstalk扩展:命令何时完成?

弹性Beanstalk扩展:命令何时完成?
EN

Stack Overflow用户
提问于 2019-02-26 10:39:00
回答 1查看 222关注 0票数 0

我有一个AWS Elastic Beanstalk设置,里面有一些带有container_commands.ebextensions文件。其中一个命令是脚本。脚本完成,但下一个命令不会运行。

代码语言:javascript
复制
$ pstree -p | grep cfn-
        |-cfn-hup(2833)-+-command-process(10161)---command-process(10162)-+-cfn-init(10317)---bash(10428)
$ ps 10317
  PID TTY      STAT   TIME COMMAND
10317 ?        S      0:00 /usr/bin/python2.7 /opt/aws/bin/cfn-init -s arn:aws:cloudformation:us-east-1:278460835609:stack/awseb-e-4qwsypzv7u-stack/f8ab55f0-393c-11e9-8907-0ae8cc519968 -r AWSEBAutoScalingGroup --region us-east-1 --configsets Infra-EmbeddedPostBuild
$ ps 10428
  PID TTY      STAT   TIME COMMAND
10428 ?        Z      0:00 [bash] <defunct>

正如您所看到的,我的脚本是一个默认的僵尸,但是cfn-init并没有为它做等待(2)系统调用。

当我从命令行运行该脚本时,它可以正常终止。

我不得不假设cfn-init得到了SIGCHLD。为什么它不等待(2)并继续前进?

此外,有没有更好的方法来调查这一点?我一直在查看正在运行的进程和读取完全没有帮助的/var/log/eb-*日志。

FWIW,脚本非常简单:

代码语言:javascript
复制
#!/usr/bin/env bash
mkfifo ~ec2-user/fifo
nohup ~ec2-user/holdlock.sh &
read < ~ec2-user/fifo

而且它不能解决的事情很简单:

代码语言:javascript
复制
#!/usr/bin/env bash
(echo 'select pg_advisory_lock(43110);';sleep 10m) |
  PGPASSWORD=$RDS_PASSWORD psql -h $RDS_HOSTNAME -d $RDS_DB_NAME -U 

$RDS_USERNAME | tee ~ec2-用户/nhlog>~ec2-用户/先入先出

EN

回答 1

Stack Overflow用户

发布于 2019-02-27 04:57:48

解决此问题的方法是将一系列命令移动到单个shell脚本中,并将其作为单个命令调用。这仍然不能解释ebextensions的实际作用,但它可以让我继续前进。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54877640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档